Tekninen viestintä 12.02.2013 Ohjelmointia teknisille viestijöille Tekninen viestintä 12.02.2013 Kertaus Kertaus print()-aliohjelmalla voit tulostaa tekstiä. Tulostettava teksti annetaan aliohjelman parametrina: print("Kaunis ilma tänään") Tekstiin voi sijoittaa ulkopuolisia elementtejä %s- (merkkijonot), %d(kokonaisluvut) ja %f- (murtoluvut) operaattoreiden avulla. Esim: print("Tässä on %s lause, johon sijoitetaan %s" % ("pitkä","sana")) Koodinvaihtomerkillä voi kiertää erikoismerkkejä tai muokata tulostetta. [\"] ohittaa lainausmerkin, [\t] lisää sarkaimen ja [\n] rivinvaihdon. Muuttujaan voi tallentaa viittauksen tiettyyn arvoon. Tähän arvoon voi myöhemmin viitata kätevästi muuttujan nimellä. Tekninen viestintä 12.02.2013 Syötteet Syötteet – Sananen käyttäjältä o Käyttäjää voidaan pyytää syöttämään tietoja input()-aliohjelman avulla o input()-aliohjelmalle annetaan parametrina teksti, joka käyttäjälle halutaan näyttää input("Syötä käyttäjänimi: ") o Tulostettuuan tekstin, aliohjelma odottaa että käyttäjä syöttää tekstiä Syötteet – Sananen käyttäjältä o Kun käyttäjä painaa enteriä, aliohjelma palauttaa käyttäjän syöttämän tekstin o Jotta käyttäjän syöttämä teksti saataisiin talteen, täytyy se tallentaa muuttujaan: username = input("Syötä käyttäjänimi: ") Wow, kuka olette? Pitkäkissa. Tallennathan tämän tiedon? ”Hra. Input” En, vaan välitän tiedon eteenpäin, neiti Pitkäkissa! ”Käyttäjä” ”Hra. muuttuja” kthanksbye, minä pidän tästä tiedosta hyvää huolta Syötteet – Sananen käyttäjältä o Käyttäjäpalautteen perusteella ohjelmia voi personoida: username = input("Syötä käyttäjänimi: ") print ("Tervetuloa palveluun " + username) TAI print ("Tervetuloa palveluun %s" % username) o Tai suorittaa tehtäviä: luku = input("Syötä luku, jonka haluat kertoa kymmenellä: ") Syötteiden tyyppi o Input-aliohjelmalla tallennetuista muuttujista tulee automaattisesti merkkijonoja: print ("Minä olen Calculon - laskukone") luku = input("Syöta luku, jonka haluat kertoa viidellä: ") tulo = luku * 5 print ("Tulos on " + tulo) Tyypin muuntaminen o Jos muuttujien tyyppiä haluaa muuttaa, täytyy muuttujalle tehdä tyyppimuunnos o Tyyppimuunnoksia varten Pythonissa on omat aliohjelmansa, esim. str(), int() ja float() o Aliohjelmalle annetaan parametrina arvo joka halutaan muuntaa, ja aliohjelma palauttaa muunnetun arvon Syötteiden tyyppi o input()-aliohjelman tavoin, myös muunnosaliohjelmien palauttama tieto täytyy tallentaa muuttujaan, jotta sitä voi käsitellä nimi = input("Syötä nimesi: ") luku = input("Syötä ikäsi: ") luku = int(luku) ikaPaivina = luku * 365 print("Moi", nimi) print("Olet " + str(ikaPaivina) + " päivää vanha") TAI print("Olet", ikaPaivina, "päivää vanha") Pro Tip! Jos muuntelu tympii, voi tulosteissa arvot yhdistää pilkuilla. Python hoitaa tällöin tarvittavat muunnokset ja lisää arvojen väliin välilyönnit! Syötteiden tyyppi o Syötteen pyytämisen ja muunnoksen voi myös yhdistää: luku = int(input("Syötä ikäsi: ")) o Python suorittaa ensin input()-aliohjelman, palauttaa sen tuloksen int()-aliohjelmaan. int()-aliohjelman palauttama arvo tallentuu tämän jälkeen luku-muuttujaan ”19” Hei taas, tarvitsisin numeron! ”Hra. Input” Mein Gott! Tuohan on merkkijono ja täytyy muuntaa! ”Käyttäjä” Pelko pois, minä kyllä muunnan syötteet Ja tuttuun tapaan, minä tallennan arvon Neiti int() ”Hra. muuttuja” Harjoitus o Tee tehtävä 1 Vastaukset a) b) c) d) nimi = input("Ilmoita nimesi: ") print ("Hauska tavata,", nimi) nimi = input("Ilmoita nimesi: ") ika = input("Ilmoita ikäsi: ") print ("Hauska tavata,", nimi + ". Olet %s-vuotias" % ika) paino = int(input("Paljonko painat: ")) painoKuussa = paino * 0.17 print ("Painosi kuun pinnalla olisi %0.1f kiloa" % painoKuussa) ika = int(input("Kuinka vanha olet: ")) ikaSekuntia = ika * 365 * 24 * 60 * 60 print ("Olet %d sekunnin ikäinen" % ikaSekuntia) Tekninen viestintä 12.02.2013 Ehtolauseet if & else o Jotta ohjelma voisi reagoida paremmin esim. käyttäjän syötteisiin, ohjelmiin voidaan sijoittaa ehtorakenteilla o Yksi yleisimmistä ehtorakenteista on if-lause o if-lause tarkastaa onko lauseen ehto tosi vai epätosi Jossittelua o Jos lauseeseen sijoitettu ehto on tosi, ohjelma siirtyy suorittamaan ehdollistettua ohjelmahaaraa. o Jos ehto on epätosi, ohjelma voi: o palata suorittamaan ohjelman päähaaraa o ehtorakenteeseen voidaan lisätä ohjelmahaara joka kertoo mitä tehdään jos ehto on epätosi Tarkista, onko jääkaapissa ruokaa! Jos ei, snägärille! Tämän jälkeen voit jatkaa muiden askareiden parissa! Jos on, syö! Jossittelua o Ehtojen arvoja verrataan vertailuoperaattoreilla: == != > < >= <= yhtä kuin erisuuri kuin suurempi kuin pienempi kuin suurempi tai yhtä suuri kuin pienempi tai yhtä suuri kuin o Vertailun tulos on aina tosi tai epätosi Jossittelua 21 < 34 myAge >= ageLimit myName == "Mika" userGuess != 42 price <= lowerLimit Kirjoitusasu if arvo1 > Tee jotakin Tee jotakin muuta else : Tee jotakin Tee jotakin muuta arvo2 : Kirjoitusasu age = int(input("How old are you?")) if age >= 18: print ("Welcome to the tavern!") else: print ("Ha! No beer for you!") Jos käyttäjän on yli 18-vuotias, toivota käyttäjä tervetulleeksi. Muutoin, käännytä käyttäjä ovella Ohjelmalohkot ja sisennykset o Pythonissa ohjelmalohkot on merkittävä johdonmukaisesti sarkaimella tai välilyönneillä. Jos lohkoja päätetään sisentää esim. sarkaimella, tulee valittua mallia noudattaa koko ohjelmassa. myName = ”Zaphod” mOfLife= 40 if mOfLife > 22: mOfLife += 2 if myName == “Zaphod”: print (“Hi %s!” % myName) print (“The meaning of life is %d” % mOfLife) else: print (“Hello, %s!” % myName) print (“We don’t know the meaning of life”) print (“End communication”) Ohjelmalohkot ja sisennykset o Jos sisennyksessä on poikkeuksia, Pythontulkki keskeyttää ohjelman suorittamisen: myName = ”Zaphod” mOfLife= 40 if mOfLife > 22: mOfLife += 2 if myName == “Zaphod”: print (“Hi %s!” % myName) print (“The meaning of life is %d” % mOfLife) else: print (“Hello, %s!” % myName) Harjoitus o Tee tehtävä 2 Vastaukset a) b) c) nimi = input("Kerro nimesi: ") if nimi == "Dweezil": print ("Onpa mainio nimi!") nimi = input("Kerro nimesi: ") if nimi == "Mika": print ("Onpa mainio nimi!") else: print ("Oletko harkinnut nimesi vaihtamista parempaan?") arvaus = input("Arvaa mitä lukua ajattelen: ") luku = "7" if arvaus == luku: print ("Arvasit oikein!") else: print ("Väärin meni. Parempi onni ensi kerralla") Vastaukset d) tunnus = input("Tämä on huippusalainen tietojärjestelmä. Syötä tunnussana: ") tunnussana = "TrustNo1" if tunnus == tunnussana: print("Pääsit kirjautumaan järjestelmään!") Joko, tai, tai sitten o Ohjelmiin saadaan lisää tarkasteltavia vaihtoehtoja käyttämällä elif-lausetta: if age >= 18: print ("Welcome to the tavern!") elif age == 16: print ("Come again in two years") elif age == 17: print ("One more year!") else: print ("No beer for you, Sonny Jim!") o elif-lauseita voi lisätä ehtorakenteeseen niin paljon kuin tehtävä vaatii Ehtojen tarkentaminen o Ehtoja voi tarkentaa yhdistelemällä useita ehtoja ehtolauseeseen loogisten operaattoreiden and ja or avulla: if age >= 18 and age < 35: print ("Welcome to the tavern!") elif age > 35: print ("Shouldn't you be at home with your family?") elif age == 16 or age == 17: print("No beer for you!") else: print ("Shouldn't you be in bed at this hour?") Ehtojen tarkentaminen o Jos ehdossa käytetään and-operaattoria, molempien ehtojen tulee täyttyä, jotta sisempi ohjelmalohko suoritetaan if age >= 18 and age < 35: o or-operaattoria käytettäessä vain toisen ehdon tarvitsee täyttyä, jotta sisempi ohjelmalohko suoritetaan if age >= 18 or bribe > 50: Ehtojen tarkentaminen o and- ja or-avainsanoja voi myös yhdistää samaan ehtolauseeseen: age = int(input("Kuinka vanha olet? ") name = input("Kerro nimesi: ") if (age >= 18 and age < 35) or (name == "Jasso Laamanen”): print ("Tervetuloa!") elif age > 35 and age < 70: print ("Eikö sinun pitäisi olla kotosalla?") elif age == 16 or age == 17: Jos asiakkaan ikä on 18-34 tai nimi on Jasso Laamanen, toivotetaan asiakas tervetulleeksi Yli 35- ja alle 70-vuotiaat käännytetään perheensä luo 16- ja 17-vuotiaille ei anniskella print("Sinulle ei vielä tarjoilla!") else: print ("Eikö sinun pitäisi olla nukkumassa?") Muiden pitäisi olla jo nukkumassa Merkkijonot ehdoissa o Jos ehtona käytetään merkkijonoa, vertailukohtana ei aina tarvitse käyttää kokonaista merkkijonoa o Merkkijonon sisältämiä merkkejä voi tarkastella inoperaattorin avulla: name = "Jasso Laamanen" if "Jasso" in name: print ("Kato, Laamanen!") o Jos tiettyä merkkijonoa ei toivota vastaukseksi, voidaan inoperaattorin eteen liittää not-operaattori: if "Jasso" not in name: Merkkijonot ehdoissa o Merkkijonoja vertailtaessa voi joskus olla tarpeen sallia sekä pienellä että isolla alkukirjaimella kirjoitettu versio sanasta o Pythonin upper() ja lower() –aliohjelmien avulla voi kirjainkoon kiertää merkkijonoja vertailtaessa inputName = input("Kerro nimesi: ") userName = "ESKO NOPPA" if inputName.upper() == userName: print ("Hei, oikea nimi!") o Aliohjelmat muuntavat muuttujan arvon sitä vertailtaessa, joten kirjainkoolla ei ole merkitystä. Jos muunnetun arvon haluaa talteen, voi sen tallentaa muuttujaan Ehtojen tarkentaminen o Myös ehtojen sisään voi sijoittaa ehtoja: name = input("Enter name: ") userLevel = "SuperUser" if name == "Admin": if userLevel == "Admin": print ("Welcome, Admin") elif userLevel == "Hacker": print ("Welcome, Kevin") elif userLevel == "SuperUser": print ("What is thy bidding?") else: print ("Get outta here!") Harjoitus o Tee tehtävä 3 Vastaukset a) b) vast = ”Bujumbura" arv = input ("Mikä on Burundin pääkaupunki? ") if arv.lower() == vast.lower(): print("Oikein!") else: print("Väärin meni") luku = int(input("Syötä luku: ")) if luku <= 500: print("Luku sijoittuu välille 0-500") elif luku > 500 and luku <= 1000: print("Luku sijoittuu välille 501-1000") else: print("Luku on suurempi kuin 1000") c) guess = 42 userGuess = int(input("Arvaa mitä numeroa ajattelen")) if userGuess == guess: print ("Onneksi olkoon! Arvasit oikein") elif userGuess > guess: print ("Väärin, ajattelin pienempää numeroa") else: print("Väärin, ajattelin suurempaa numeroa") d) user1 = "JohnnyUser" pass1 = "123456" user2 = "JennyUser" pass2 = "MyPassword" … username = input("Käyttäjätunnus: ") password = input("Salasana: ") if username == user1 and password == pass1: print ("Tervetuloa järjestelmään") elif username == user2 and password == pass2: print ("Tervetuloa järjestelmään") … else: print ("Väärä salasana")
© Copyright 2024