Esittely latautuu. Ole hyvä ja odota

Esittely latautuu. Ole hyvä ja odota

Ohjelmointia teknisille viestijöille

Samankaltaiset esitykset


Esitys aiheesta: "Ohjelmointia teknisille viestijöille"— Esityksen transkriptio:

1 Ohjelmointia teknisille viestijöille
Tekninen viestintä Ohjelmointia teknisille viestijöille

2 TAPAHTUI VIIME JAKSOSSA
Lista on ehkäpä yleisin tietorakenne Pythonissa omalista = [1, 2, "Leipä", True] Listalle voi tallentaa useita eri tietotyyppejä. Samalla listalla voi olla merkkijonoja, numeroita, listoja tai vaikkapa kirjastoja Listoja voi käsitellä listafunktioiden avulla: Lisäys: omalista.add(42) Poisto: omalista.remove("kohde") Poisto järj.numerolla: omalista.pop(0) Järjestäminen: omalista.sort() Järjestäminen: omalista.sort(reverse=True) Järjestyksen käänt.: omalista.reverse() Listan sisältöä voi tutkailla in-operaattorin avulla. Operaattori kertoo totuusarvon avulla onko tietty kohde listalla

3 TAPAHTUI VIIME JAKSOSSA
Listan kohtia voi lukea ja muokata järjestysnumeron avulla: print(omalista[4]) omalista[2] = "maailmankartasto" Sisäkkäisten listojen kohtia voi lukea kaksinkertaisen järjestysnumeron avulla: omalista[3][0] Ensimmäinen järjestysnumero kertoo monettako kohtaa ulommasta listasta tarkastellaan ja toinen kertoo monettako kohtaa sisemmästä listasta

4 TAPAHTUI VIIME JAKSOSSA
Kirjasto on toinen yleinen tietotyyppi Kirjastossa tietoja ei ole tallennettu tiettyyn järjestykseen, vaan tietoa tallennetaan ja luetaan avainten avulla: tvKirjasto = { "Scifi":"Babylon 5", "Sitcom":"Spaced", "Space Western":"Firefly"} print(tvKirjasto["Scifi"]) tvKirjasto["Fantasy"] = "Game of Thrones" Kirjastoihin voi tallentaa myös kirjastoja. Näin päätason avaimen alle saa kätevästi tallennettua päätason avaimeen liittyviä tietoja ja hakea niitä helposti: elokuvat = { "Shaun of the Dead": {"vuosi":2004, "imdb":8.0, "kesto":99}, "Hot Fuzz": {"vuosi":2007, "imdb":7.9, "kesto":116}, "The World's End": {"vuosi":2013, "imdb":7.0, "kesto":109} } print(elokuvat["Hot Fuzz"]) print(elokuvat["Hot Fuzz"]["imdb"])

5 Tekninen viestintä Silmukat

6 SILMUKAT Silmukat ovat useimpien ohjelmointikielten peruselementti
Silmukoiden avulla ohjelman saa toistamaan tietyn tehtävän useita kertoja ilman että ohjelmaan tarvitsee kirjoittaa useita toistuvia koodirivejä Silmukoiden avulla erilaisten tietorakenteiden koostaminen ja lukeminen helpottuu

7 WHILE-SILMUKKA While-silmukka on yksi Pythonin sisäänrakennetuista silmukoista While-silmukka toistaa jotain tiettyä tehtävää, kunnes silmukasta poistumiseen vaadittava ehto täyttyy Ohjelma voi esim. kysyä käyttäjältä salasanaa niin monta kertaa, että käyttäjä kirjoittaa salasanan oikein Onko vielä ruokaa? Kyllä Ei SYÖ!

8 WHILE-SILMUKKA While-silmukka on hyödyllinen erityisesti silloin kun ohjelman laatija ei voi etukäteen tietää kuinka monta joku tietty toiminto tulee suorittaa ennen kuin ohjema saa halutun arvon While-silmukka on avuksi esim. pyydettäessä käyttäjältä syötteitä

9 WHILE-SILMUKKA Silmukka määritetään while-operaattorilla ja siihen liittyvällä ehdolla Kohdatessaan while-operaattorin, Python tarkastaa ehdon Jos ehto on tosi Python toistaa while-silmukan sisällä olevan koodilohkon ja tarkastaa sen jälkeen onko ehto edelleen tosi while True: print("Moikka!") >>> 'Moikka’ >>> 'Moikka'

10 WHILE-SILMUKKA nimi = input("Kerro nimesi: ") if len(nimi) == 0: nimi = input("Nimi ei voi olla tyhjä. Kerro nimesi: ") print("Moi {}".format(nimi))

11 WHILE-SILMUKKA nimi = input("Kerro nimesi: ") while len(nimi) == 0: nimi = input("Nimi ei voi olla tyhjä. Kerro nimesi:") print("Moi {}".format(nimi))

12 WHILE-SILMUKKA While-silmukassa voi suorittaa myös tietyn määrän jotain haluttua toimintoa käyttämällä muuttujaa laskurina Kun laskuri-muuttujan arvo saavuttaa halutun rajan, silmukan suorittaminen päättyy print(0) print(1) print(2) print(3) print(99) print(100) VS numero = 1 while numero <= 100: print(numero) numero = numero + 1

13 WHILE-SILMUKKA Silmukan päättävänä arvona voi olla myös käyttäjältä kerättävän tiedon määrä Kun tiedot tallentaa listaan, silmukasta poistuminen käy listan pituutta seuraamalla: kevaanKurssit = [] while len(kevaanKurssit) < 5: kurssi = input("Lisää kurssi, jonka aiot suorittaa: ") kevaanKurssit.append(kurssi) print ("Kevään ohjelmassa on nyt kurssit: {}".format(kevaanKurssit[::1]))

14 WHILE-SILMUKKA Käyttämällä silmukassa ehtoja, toistosta – esimerkiksi tietojen keräämisestä – voi tehdä älykkäämpää kevaanKurssit = [] while len(kevaanKurssit) < 3: kurssi = input("Lisää kurssi, jonka aiot suorittaa: ") if kurssi not in kevaanKurssit: kevaanKurssit.append(kurssi) print ("Kevään ohjelmassa on nyt kurssit: {}".format(kevaanKurssit[::1]))

15 WHILE-SILMUKKA Silmukkaa laadittaessa täytyy varmistaa, että silmukan ei täyty ennenaikaisesti Jos tarkistettava arvo on määritetty silmukan ehtoa vastaavaksi jo etukäteen silmukan sisällä olevaa koodilohkoa ei suoriteta koskaan vastaus = "" while vastaus != "Siksi": vastaus = input("Miksi? ") print ("Ohjelma loppui") VS. vastaus = "Siksi"

16 WHILE-SILMUKKA Toisaalta, silmukoita käytettäessä tulee myös varmistaa, että silmukan suorittaminen päättyy nro = 1 while nro != 100: print("Laskuri:{}".format(nro)) nro = nro + 2 while True: print("All work and no play makes Jack a dull boy.")

17 WHILE-SILMUKKA

18 Miniprojekti: Keinoälylapsi
Johtaja Mahamiehen hoivavietti on karannut käsistä Rakennetaan johtajalle kaksivuotiasta lasta simuloiva tekoäly, jotta johtaja välttyisi vaipanvaihdolta, mutta silti saisi tuntumaa lasten kanssa elämiseen

19 HARJOITUS: WHILE-SILMUKKA
Laadi while-silmukkaa ja listaa käyttäen lottoarvontaa simuloiva ohjelma, joka: Arpoo numeroita väliltä 1-40 kunnes ohjelma on saanut arvottua seitsemän eri numeroa listalle Tulostaa arvotut numerot näytölle

20 HARJOITUS: WHILE-SILMUKKA
Laadi while-listaa käyttäen aiemmin tehdystä numeronarvausohjelmasta uusi versio, joka: Pyytää käyttäjää arvaamaan tietokoneen arpoman numeron väliltä 1-20 Kertoo käyttäjälle oliko tämän arvaus suurempi vai pienempi kuin oikea luku, jos käyttäjä arvaa vääriin Pyytää käyttäjää arvaaman numeroa siihen asti että tämä vastaa oikein

21 HARJOITUS: WHILE-SILMUKKA
Laadi while-silmukkaa ja sanakirjaa käyttäen ohjelma: Johon on tallennettu kolmen käyttäjän käyttäjätunnus ja salasana Joka kysyy käyttäjältä käyttäjätunnusta ja salasanaa kunnes käyttäjä syöttää oikeat tiedot TAI Yrittää syöttää väärän tiedon viisi kertaa

22 Tekninen viestintä for-silmukka

23 FOR-SILMUKKA for-silmukka on toinen Pythonin silmukkarakenteista
For-silmukka rakentuu muuttujasta ja sarjasta For-silmukkaa käytetään tavallisesti silloin kun ohjelmassa halutaan tarkastella jonkun sarjan jokaista elementtiä ja (mahdollisesti) suorittaa elementille joku toiminto.

24 FOR-SILMUKKA Kun for-silmukkaa suoritetaan, ensimmäisellä suorituskerralla for-silmukan muuttuja saa arvokseen sarjan ensimmäisen arvon ja seuraavilla suorituskerroilla sarjan seuraavana vuorossa olevan arvon For-silmukan suorituskertoja on helppo hallita silmukassa käytettävän sarjan pituutta muokkaamalla

25 FOR-SILMUKKA Jos haluat tulostaa luvut 1-10, voit tehdä sen tulostamalla numerot peräkkäisillä print-komennoilla... print(1) print(2) print(3) print(9) print(10)

26 FOR-SILMUKKA ...tai voit luoda sarjan, jossa on numerot 1-10 ja luoda sen avulla for-silmukan for i in range(1,11): print(i)

27 FOR-SILMUKKA for-silmukan määrittävä lause for i in range(1,11) antaa Pythonille seuraavat ohjeet: Luo range-funktiolla sarja, joka sisältää numerot 1, 2, 3, 4, 5, 6, 7, 8, 9 ja 10 Tallenna aluksi sarjan ensimmäinen luku, 1, muuttujaan i Suorita sisennetty ohjelmalohko Kun sisennetty ohjelmalohko on suoritettu, tallenna sarjan seuraava elementti muuttujaan i

28 FOR-SILMUKKA Kun muuttujaan i on tallennettu sarjan senhetkinen arvo, arvoa voi käyttää sisennetyssä ohjelmalohkossa for i in range(1,11): print(i) print(i * 5)

29 FOR-SILMUKKA Jos haluat vain toistaa tietyn tehtävän esim. kymmenen kertaa, voit käyttää range()-funktiossa vain yhtä parametria Jos range()-funktioon syöttää vain pääteparametrin, funktio palauttaa sarjan joka alkaa nollasta ja päättyy ennen pääteparametria for i in range(10): print(i) >>> 0 >>> 1 >>> 2 >>> 3 >>> 4 >>> 5 >>> 6 >>> 7 >>> 8 >>> 9

30 FOR-SILMUKKA Toiston avulla voidaan suorittaa esim. laskutoimituksia, joissa arvo kasvaa tasaisesti jyvat = 1 yhteensa = 0 for ruutu in range(1, 65): print("Ruudussa {} on {} jyvaa".format(ruutu, jyvat)) yhteensa += jyvat jyvat = jyvat * 2 print ("Jyvia kertyi yhteensa {}".format(yhteensa))

31 FOR-SILMUKKA Sarjaa määritettäessä käytettävän muuttujan nimen voi valita vapaasti Myös sarja voi olla mikä tahansa Pythonin sarjatyypeistä Koska merkkijonot ovat sarjoja, myös niitä voi käydä läpi merkki kerrallaan for-silmukan avulla for kirjain in "abcd": print (kirjain) for ostos in ("Maito", "Juusto", "Pekoni", "Nuudelit"): print(ostos)

32 FOR-SILMUKKA Sanakirjoja voi myös tarkastella for-silmukassa
Tällöin täytyy käyttää sanakirjan keys()-funktiota, jolla sanakirjan avaimet saa muokattua sarjaksi supersankarit = { "Marvel": ["Wolverine","Hawkeye","Musta Leski","Kapteeni Marvel"], "DC": ["Batman", "Ihmenainen", "Musta Kanarialintu", "Robin"]} for key in supersankarit.keys(): print (supersankarit[key])

33 FOR-SILMUKKA Jos sanakirjaan on tallennettu listoja (eli sarjoja), näiden sisältöä voi tarkastella laatimalla sisäkkäisen for-silmukan supersankarit = { "Marvel":["Wolverine","Hawkeye","Musta Leski","Kapteeni Marvel"], "DC": ["Batman", "Ihmenainen", "Musta Kanarialintu", "Robin"], "Dark Horse":["Hellboy","Abe Sapien", "Miyamoto Usagi"]} for key in supersankarit.keys(): print("{}-sankarit:".format(key)) for sankari in supersankarit[key]: print(sankari)

34 FOR-SILMUKKA Sisäkkäisissä for-silmukoissa sisempi silmukka suoritetaan kokonaan aina kun ulommassa silmukassa siirrytään yksi askel eteenpäin key: "Marvel" sankari: "Wolverine" sankari: "Hawkeye" sankari: "Musta Leski" sankari: "Kapteeni Marvel" key: "DC" sankari: "Batman" sankari: "Ihmenainen" sankari: "Musta Kanarialintu" sankari: "Robin" key: "Dark Horse" sankari: "Hellboy" sankari: "Abe Sapien" sankari: "Miyamoto Usagi"

35 FOR-SILMUKKA for-silmukoissa voi käyttää myös ehtolauseita käsiteltävän sarjan tarkastelun apuna # De-vokalisaattori VOKAALIT = "aieouyäö" # vakiot merkitään isoilla kirjaimilla alkuSana = input("Syötä sana, josta haluat poistaa vokaalit: ") uusiSana = "" for kirjain in alkuSana: if kirjain not in VOKAALIT: uusiSana = uusiSana + kirjain # tai uusiSana += kirjain print (uusiSana)

36 Miniprojekti: konttikääntäjä
Johtaja Mahamies haluaa tehdä vaikutuksen kummilapsiinsa puhumalla täydellistä kontinkieltä Jotta homma onnistuisi, johtaja tarvitsee ohjelman, joka kääntää lauseet kontinkielelle Apuna voit käyttää split()-funktiota, jolla merkkijonon voi pilkkoa listamuotoon sanat = "Tässä on muutaman sanan lause" sanalista = sanat.split()

37 HARJOITUS: FOR-SILMUKKA
Laadi ohjelma, joka: pyytää käyttäjää syöttämään tekstin pyytää käyttäjää kertomaan kuinka monta kertaa teksti tulisi tulostaa tulostaa tekstin niin monta kertaa kuin käyttäjä tahtoi

38 HARJOITUS: FOR-SILMUKKA
Laadi ohjelma, joka: pyytää käyttäjää syöttämään viisi ostoslistalle lisättävää ostosta tallentaa käyttäjän syöttämät ostokset ostoslistalle järjestelee ostoslistan aakkosjärjestykseen tulostaa numeroidun ostoslistan Esim: >>> 1. Maitoa >>> 2. Strutsi >>> 3. Kumiankka >>> ...

39 HARJOITUS: FOR-SILMUKKA
Laadi FizzBuzz-ohjelma, eli ohjelma joka tulostaa luvut 1-50, mutta: Tulostaa tekstin "Fizz", jos luku on jaollinen kolmella Tulostaa tekstin "Buzz", jos luku on jaollinen viidellä Tulostaa tekstin "FizzBuzz", jos luku on jaollinen kolmella ja viidellä

40 Tekninen viestintä Tiedostojen tutkailu

41 OS-MODUULI os-moduuli on Python-moduuli, jonka avulla ohjelmissa voi käyttää käyttöjärjestelmän komentoja os-moduulissa on aliohjelmia, joiden avulla ohjelmasi voi esim. luoda ja poistaa hakemistoja, ja lukea hakemistojen sisältöjä Tämän lisäksi os-moduuli sisältää path-moduulin, jossa on hakemistopolkujen käsittelyyn liittyviä aliohjelmia

42 OS-MODUULI Tietyssä hakemistossa olevien tiedostojen listaaminen onnistuu listdir()-funktion avulla listdir()-funktio palauttaa käyttäjälle listan tietyssä hakemistossa olevista tiedostoista ja alihakemistoista import os dirContent = os.listdir(".") print (dirContent)

43 OS-MODUULI listdir()-aliohjelman parametrina voit käyttää joko absoluuttista tai suhteellista polkua ABSOLUUTTINEN POLKU: C:\Python34\test.py X:\TECHS5\Harjoitukset\teht4c.py SUHTEELLINEN POLKU: . - tämänhetkinen hakemisto .. - Jos ohjelma suoritetaan hakemistossa c:\test\python, tarkoittaa hakemistoa c:\test sub1\sub2 - tarkoittaa tämänhetkisen hakemiston alihakemiston sub1 alihakemistoa sub2 ..\sub1 - Jos ohjelma suoritetaan hakemistossa C:\test\python, tarkoittaa hakemistoa c:\test\sub1

44 OS-MODUULI Python sallii tiedostoihin viittaamisen suoraan merkkijonon avulla: Jotta ohjelma olisi helpompi siirtää käyttöjärjestelmästä toiseen, tämä tapa ei kuitenkaan ole suositeltava. Windows-järjestelmissä kenoviiva on hakemistopolkujen erotin, mutta *nix-järjestelmissä hakemistopolkujen erottimena käytetään vinoviivaa tiedosto = open ("c:\\hakemisto\\tiedosto.txt")

45 OS-MODUULI os-moduulin os.sep-komponentti tuottaa haluttuun kohtaan käyttöjärjestelmäkohtaisen hakemistopolun erottimen Hakemistopolun saa määritettyä myös os.path-moduulin join() –aliohjelman avulla import os polku = "C:" + os.sep + "Python34" + os.sep + "test.py" import os,os.path polku = os.path.join("C:",os.sep,"Python34", "test.py")

46 TIEDOSTOJEN LUKEMINEN
Tekstitiedostoja voi avata open()-funktiolla Oletuksena tiedosto avataan vain luku-tilassa Tilan, jossa tiedosto avataan, voi määrittää lisäparametrin avulla: tiedostonimi = os.path.join("c:",os.sep,"jokuteksti.txt") tiedosto = open (tiedostonimi) tiedostonimi = os.path.join("c:",os.sep,"jokuteksti.txt") tiedosto = open (tiedostonimi, "r") - Vain luku tiedosto = open (tiedostonimi, "w") - Kirjoitus tiedosto = open (tiedostonimi, "a") - Lisäys

47 TIEDOSTOJEN LUKEMINEN
Pythonin näkökulmasta Open()-funkiolla avattu ja muuttujaan tallennettu tiedosto on sarja - sen voi siis lukea for-silmukan avulla Sarjan elementtejä ovat esim. tekstitiedoston rivit: tiedostoNimi = os.path.join("c:",os.sep,"jokuTiedosto.txt") munTiedosto = open(tiedostoNimi, "r") for rivi in munTiedosto: print (rivi)

48 TIEDOSTOON KIRJOITTAMINEN
write() on perusfunktio, jolla voit kirjoittaa tekstiä tiedostoon. write()-funktio vaatii, että tiedosto, johon kirjoitetaan on avattu kirjoitus- tai lisäystilassa write()-funktiota käytettäessä tulee rivinvaihto lisätä \n -erikoismerkillä filename = os.path.join("c:",os.sep,"docs","gradu.txt") newFile = open(filename, "w") newFile.write("Smart sentence with original thoughts.\n") newFile.write("Another smart sentence.\n")

49 TIEDOSTOON KIRJOITTAMINEN
Kun tiedosto on kirjoitettu tai luettu, eikä sitä enää tarvita, kannattaa tiedosto sulkea close()-aliohjelmalla, jottei tiedosto jää turhaan muistiin: filename = os.path.join("c:",os.sep,"docs","gradu.txt") newFile = open(filename, "w") newFile.write("Smart stuff\n") newFile.close()

50 TIEDOSTOJEN POISTAMINEN
Tiedostojen poistaminen onnistuu remove()-funktion avulla import os,os.path tiedosto = os.path.join("c:", os.sep, "Python34", "tiedosto.txt") os.remove(tiedosto)

51 VIRHEIDEN VÄISTELY Jos yrität ladata sisältöä tiedostosta, jota ei ole olemassa, Python muistaa sinua virheilmoituksella Tiedoston olemassaolon voi Pythonissa tarkistaa os.path-moduulista löytyvän exists()-funktion avulla: import os, os.path tiedosto = os.path.join("c:", os.sep, "temp", "tiedosto.txt") if os.path.exists(tiedosto): file = open(tiedosto)

52 VIRHEIDEN VÄISTELY Jos ohjelmalla halutaan tarkastaa piileekö käyttäjän syöttämän nimen takana tiedosto vai hakemisto, voidaan apuna käyttää os.path-moduulin isdir()- ja isfile()-funktioita: import os haku = input("Syötä tiedoston/hakemiston nimi: ") if os.path.isdir(haku): print (haku, "on hakemisto") elif os.path.isfile(haku): print (haku, "on tiedosto") else: print("Tiedostoa/hakemistoa ei löytynyt, tai sen tyyppi on tuntematon")

53 VIRHEIDEN VÄISTELY import os
tiedosto = input ("Minkä tiedoston haluat poistaa?") if not os.path.exists(tiedosto): tiedosto = input("Tiedostoa %s ei löytynyt. Syötä tiedostonimi: " % tiedosto) vahvistus = input("Tiedosto %s löytyi. Haluatko varmasti poistaa sen (K/E) " % tiedosto) if vahvistus.lower() == "k": os.remove(tiedosto) print("Tiedosto %s poistettu" % tiedosto) else: print("Ohjelma päättyi. Tiedostoa %s ei poistettu" % tiedosto)

54 HARJOITUS: TIEDOSTOT Kirjoita ohjelma, joka:
lukee tiedoston harkka1.txt sisällön tulostaa sisällön rivi kerrallaan ruudulle

55 HARJOITUS: TIEDOSTOT Kirjoita ohjelma, joka:
lukee tiedoston harkka2.txt sisällön järjestää sisällön aakkosjärjestykseen tulostaa sisällön rivi kerrallaan ruudulle poistaa lopuksi tiedoston harkka2.txt

56 HARJOITUS: TIEDOSTOT Kirjoita ToDo-listaohjelma, joka:
kysyy käyttäjältä viittä ToDo-listalle lisättävää asiaa tallentaa listan tiedostoon harkka3.txt,

57 HARJOITUS: TIEDOSTOT Kirjoita ohjelma, joka:
lukee hakemistosta kaikki sen sisältämät tiedostot tulostaa jokaisen Python-tiedoston nimen ja tiedoston sisällön ruudulle

58 Tekninen viestintä Ikiomat funktiot

59 FUNKTIOT Pythoniin sisäänrakennettujen funktioiden, eli aliohjelmien, lisäksi kieli sallii myös omien funktioiden määrittämisen Funktioiden avulla omia ohjelmia voi selkiyttää – jos ohjelmassa tarvitaan jotain koodirakennetta useasti, voit määrittää kerran ja käyttää aina tarvittaessa

60 FUNKTIOT Omat funktiot toimivat kuten muutkin funktiot – ne voivat suorittaa jonkun tehtävän tai palauttaa tietynlaisen arvon Kuten Pythonin sisäänrakennettuihin funktioihin, myös omiin funktioihin voi halutessaan syöttää parametreja, joita funktio käyttää toiminnoissaan

61 FUNKTIOT Funktion määrittäminen alkaa def-avainsanalla ja funktion nimellä: Tämän jälkeen tarvitaan sulkeet, joiden sisään määritetään funktiossa käytettävät parametrit: Lopuksi, funktion määrittävän lauseen loppuun lisätään kaksoispiste: def kertolaskija def kertolaskija(arvo1, arvo2) def kertolaskija(arvo1, arvo2):

62 FUNKTIOT Funktion suorittamat toiminnot määritetään sisennettyyn koodilohkoon funktion määrittävän lauseen alle: Funktiota käytetään kutsumalla sitä: Kutsuttaessa käytettävät arvot tallentuvat funktiossa määritettyihin muuttujiin. Luku 5 tallentuu muuttujaan arvo1 ja luku 12 muuttujaan arvo2 def kertolaskija(arvo1, arvo2): tulo = arvo1 * arvo2 kertolaskija(5, 12)

63 FUNKTIOT Funktiota määrittäessä käytettävät muuttujat voi nimetä mielensä mukaan Niitä voi käyttää funktion sisällä kuten tavallisia muuttujia def kertolaskija(arvo1, arvo2): tulo = arvo1 * arvo2 print(arvo1) str(arvo2)

64 FUNKTIOT Jotta funktion suorittamasta työstä – tässä tapauksessa kertolaskusta – voi hyötyä ohjelmassa, funktio voi palauttaa arvon Funktion palauttaman arvon voi tallentaa haluamaansa muuttujaan ja käyttää ohjelmassa: def kertolaskija(arvo1, arvo2): tulo = arvo1 * arvo2 return tulo vastaus = kertolaskija(5, 12) print(vastaus) >>> 60

65 FUNKTIOT Funktio voi sisältää niin monta koodiriviä kuin tehtävän suorittaminen vaatii Funktiot eivät ole monitoimityökaluja – hyvä funktio tekee vain yhden asian, mutta tekee sen hyvin. def kaantaja(kaannettava): kaannos = kaannettava[::-1] return kaannos print(kaantaja("Apinalauma")) >>> amualanipA numerolista = [1,2,3,4,5,6] print(kaantaja(numerolista)) >>> [5, 4, 3, 2, 1]

66 FUNKTIOT JA PARAMETRIT
Kutsuttaessa aliohjelmaa, joka vaatii parametrin, täytyy parametrin olla kutsussa mukana: def tervehtija (nimi): print ("Tervetuloa ohjelmaan {}".format(nimi)) tervehtija("Mika") >>> Tervetuloa ohjelmaan Mika tervehtija() >>> TypeError: tervehtija() missing 1 required positional argument: 'nimi'

67 FUNKTIOT JA PARAMETRIT
Jos aliohjelmaan voi syöttää useamman kuin yhden parametrin, aliohjelmaan syötetyt parametrit määritetään aliohjelman nimettyihin muuttujiin siinä järjestyksessä kuin ne on syötetty kutsuun def tervehtija (nimi, ika): print ("Tervetuloa ohjelmaan {}".format(nimi)) print ("Olet {}-vuotias".format(ika)) nimi = "Erkki Mustakari" tervehtija(27, nimi)

68 FUNKTIOT JA PARAMETRIT
Siltä varalta, että parametri unohtuu syöttää, joka parametrille voi määrittää oletusarvon: def tervehtija (nimi="Mika", ika = 77): print("Tervetuloa ohjelmaan {}".format(nimi)) print("Olet {}-vuotias".format(ika)) tervehtija() >>> Tervetuloa ohjelmaan Mika >>> Olet 77-vuotias tervehtija("Mika") tervehtija("Esko Noppa", 35) >>> Tervetuloa ohjelmaan Esko Noppa >>> Olet 35-vuotias

69 FUNKTIOT JA PARAMETRIT
Oletusarvojen ansiosta aliohjelmiin voi syöttää tarvittaessa vain haluamansa arvon ja luottaa toisten arvojen osalta oletusarvoihin def tervehtija (nimi="Vieras", ika = 27, kengannumero = 44): print ("Tervetuloa ohjelmaan {}".format(nimi)) print ("Olet {}-vuotias".format(ika)) print("Kengännumerosi on {}" .format(kengannumero)) tervehtija() tervehtija(kengannumero=42) tervehtija(ika=55)


Lataa ppt "Ohjelmointia teknisille viestijöille"

Samankaltaiset esitykset


Iklan oleh Google