Ohjelmoinnin perusteet Y Python

Samankaltaiset tiedostot
Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Ohjelmassa henkilön etunimi ja sukunimi luetaan kahteen muuttujaan seuraavasti:

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1

Merkkijonon tutkiminen matches-metodilla

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1

Pythonin Kertaus. Cse-a1130. Tietotekniikka Sovelluksissa. Versio 0.01b

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin perusteet Y Python

Kerta 2. Kerta 2 Kerta 3 Kerta 4 Kerta Toteuta Pythonilla seuraava ohjelma:

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

ITKP102 Ohjelmointi 1 (6 op)

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin peruskurssi Y1

Merkkijono määritellään kuten muutkin taulukot, mutta tilaa on varattava yksi ylimääräinen paikka lopetusmerkille:

Ohjelmoinnin perusteet Y Python

Java-kielen perusteet

ITKP102 Ohjelmointi 1 (6 op)

7. Näytölle tulostaminen 7.1

Ohjelmoinnin peruskurssi Y1

T Ohjelmoinnin perusteet Y (Python). Tentti

Java-kielen perusteet

Java-kielen perusteet

Luento 5. Timo Savola. 28. huhtikuuta 2006

Ohjelmoinnin perusteet Y Python

ITKP102 Ohjelmointi 1 (6 op)

Python-ohjelmointi Harjoitus 2

14. Hyvä ohjelmointitapa 14.1

815338A Ohjelmointikielten periaatteet Harjoitus 7 Vastaukset

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin perusteet Pythonilla. Teemu Sirkiä, 2015

Datatähti 2019 alku. task type time limit memory limit. A Kolikot standard 1.00 s 512 MB. B Leimasin standard 1.00 s 512 MB

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1

MITÄ JAVASCRIPT ON?...3

IDL - proseduurit. ATK tähtitieteessä. IDL - proseduurit

13. Hyvä ohjelmointitapa (osa 1) 13.1

ATK tähtitieteessä. Osa 3 - IDL proseduurit ja rakenteet. 18. syyskuuta 2014

Ohjelmoinnin peruskurssi Y1

Pythonin alkeet Syksy 2010 Pythonin perusteet: Ohjelmointi, skriptaus ja Python

Java-kielen perusteita

T Ohjelmoinnin perusteet Y (Python)

Transkriptio:

Ohjelmoinnin perusteet Y Python T-106.1208 23.2.2009 T-106.1208 Ohjelmoinnin perusteet Y 23.2.2009 1 / 44

Debuggeri Tyypillinen tilanne: ohjelma on kirjoitettu, Python-tulkki ei valita virheistä, mutta ohjelma kuitenkin toimii jotenkin väärin. Tällöin ohjelman toimintaa voi tutkia ja virhettä yrittää etsiä debuggerin avulla. Debuggeri on ohjelma, jonka avulla ohjelmaa voi ajaa käsky kerrallaan ja tutkia samalla ohjelman käyttämien muuttujien arvoja. Ohjelmaan voi asettaa pysähdyspisteitä (breakpoint), joissa ohjelma pysähtyy. Eclipseen kuuluu debuggeri, jonka avulla voi ajaa mm. Python-ohjelmia. T-106.1208 Ohjelmoinnin perusteet Y 23.2.2009 2 / 44

Debuggerin käytttö Eclipsessä Ennen debuggerin käynnistymistä kannattaa asettaa ensimmäinen pysähdyspiste. Valitaan haluttu rivi koodista, painetaan rivin vasemmassa reunassa hiiren oikeaa painiketta ja valintaan esiin tulevasta valikosta Add breakpoint. Tämän jälkeen debuggerin voi käynnistää valitsemalla Run->Debug As->Python Run Eclipse ajaa ohjelmaa ensimmäiseen pysähdyspisteeseen saakka. Tämän jälkeen ohjelmassa voi edetä rivi kerrallaan valitsemalla Run->Step Over. Jos rivillä on funktion kutsu, ja haluaa siirtyä funktion sisälle, on valittava Run->Step Into. Muuttujien arvot näkyvät joka vaiheessa oikeassa yläkulmassa olevalla välilehdellä. Debuggauksesta pääsee takaisin ohjelman editointiin oikeassa yläkulmassa olevan Debug-painikkeen viereisestä nuolesta. (Valitse Pydev) T-106.1208 Ohjelmoinnin perusteet Y 23.2.2009 3 / 44

Merkkijonot Merkkijonojen avulla ohjelmassa voi esittää tekstitietoa, esim. nimiä, osoitteita ja erilaisia tunnuksia. Merkkijonon tyyppi Pythonissa on str. Yksittäisiä merkkejä varten ei ole omaa tyyppiä, vaan ne ovat yhden merkin pituisia merkkijonoja. Merkkijono esitetään yksin- tai kaksinkertaisten lainausmerkkien avulla. mjono = appelsiini mjono = "appelsiini" T-106.1208 Ohjelmoinnin perusteet Y 23.2.2009 5 / 44

Merkkijonojen käsittely Merkkijonoja voidaan käsitellä monessa tapauksessa samalla tavalla kuin listoja, esim. >>> sana = "sitruuna" >>> print sana[3] r Olennainen ero: merkkijonon sisältöä ei voi muuttaa sen jälkeen, kun merkkijono on luotu, esim. >>> sana[3] = a Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: str object does not support item assignment T-106.1208 Ohjelmoinnin perusteet Y 23.2.2009 7 / 44

Merkkijonon läpikäynti Merkkijonon merkit voi käydä läpi for-käskyn avulla samalla tavalla kuin listan alkiot: >>> mjono = "matti" >>> for merkki in mjono:... print merkki... m a t t i T-106.1208 Ohjelmoinnin perusteet Y 23.2.2009 9 / 44

Alimerkkijonot Merkkijonosta voi ottaa myös alimerkkijonoja samaan tapaan kuin listoista alilistoja: >>> mjono = "appelsiini" >>> print mjono[2:5] pel >>> print mjono [:4] appe >>> print mjono [:-1] appelsiin T-106.1208 Ohjelmoinnin perusteet Y 23.2.2009 11 / 44

Merkkijonon pituus ja merkin esiintymisen tutkiminen Merkkijonon pituuden saa selville funktiolla len. >>> mjono = "appelsiini" >>> print len(mjono) 10 Operaattorin in avulla voi tutkia, esiintyykö merkki merkkijonossa. >>> print "i" in mjono True Operaattorin in avulla voi myös tutkia, esiintyykö pitempi merkkijono osana toista. >>> print "else" in mjono False >>> print "elsi" in mjono True T-106.1208 Ohjelmoinnin perusteet Y 23.2.2009 13 / 44

Merkin esiintymiskohta merkkijonossa Metodin index avulla voidaan hakea parametrina annetun merkin ensimmäinen esiintymispaikka merkkijonosta: >>> mjono = "appelsiini" >>> print mjono.index("i") 6 Saman metodin avulla voidaan hakea myös pitempää merkkijonoa: >>> print mjono.index("lsi") 4 Ohjelma kaatuu, jos haettua merkkijonoa ei löydy : >>> print mjono.index("lse") Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: substring not found T-106.1208 Ohjelmoinnin perusteet Y 23.2.2009 15 / 44

Sijoitus merkkijonomuuttujaan Merkkijonon sisältöä ei voi muuttaa sen jälkeen, kun merkkijono on luotu. Voidaan kuitenkin tehdä uusi merkkijono ja sijoittaa se arvoksi vanhalle muuttujalle: >>> mjono = "mansikka" >>> print mjono mansikka >>> mjono = "mustikka" >>> print mjono mustikka T-106.1208 Ohjelmoinnin perusteet Y 23.2.2009 17 / 44

Uusi merkkijono vanhan avulla Uusi merkkijono voi kuitenkin riippua jotenkin vanhasta merkkijonosta. Metodi upper luo uuden merkkijonon, joka sisältää muuten samat merkit kuin vanha merkkijono, mutta kaikki pienet kirjaimet on muutettu isoiksi: >>> mjono = "mustikka" >>> mjono = mjono.upper() >>> print mjono MUSTIKKA Metodi lower luo uuden merkkijonon, joka sisältää muuten samat merkit kuin vanha merkkijono, mutta kaikki pienet kirjaimet on muutettu isoiksi: >>> print mjono MUSTIKKA >>> mjono = mjono.lower() >>> print mjono mustikka T-106.1208 Ohjelmoinnin perusteet Y 23.2.2009 19 / 44

Merkkijonojen liittämiset Useampi merkkijono voidaan liittää peräkkäin +-operaattorilla. >>> etunimi = "Matti" >>> sukunimi = "Virtanen" >>> kokonimi = etunimi + " " + sukunimi >>> print kokonimi Matti Virtanen Jos merkkijonoon halutaan liittää muuntyyppisten muuttujien arvoja, pitää ensin suorittaa tyypinmuunnos str-operaattorilla. >>> tunteja = 50 >>> tuntip = 12.5 >>> palkka = tunteja * tuntip >>> tulosrivi = str(tunteja) + " h * " + str(tuntip) + \... " eur / h = " + str(palkka) >>> print tulosrivi 50 h * 12.5 eur / h = 625.0 T-106.1208 Ohjelmoinnin perusteet Y 23.2.2009 21 / 44

Merkkijonojen monistaminen Operaattorin * avulla voidaan tehdä merkkijono, joka sisältää pienemmän merkkijonon monta kertaa. Rivinvaihtomerkin saa tarvittaessa mukaan lisäämällä merkkijonoon erikoismerkin "\n": >>> merkit = "*!*" >>> rivi = 5 * merkit >>> print rivi *!**!**!**!**!* >>> rivit = 3 * (rivi + "\n") >>> print rivit *!**!**!**!**!* *!**!**!**!**!* *!**!**!**!**!* T-106.1208 Ohjelmoinnin perusteet Y 23.2.2009 23 / 44

Erikoismerkkejä Merkkijonoihin on mahdollista liittää erikoismerkkejä (engl. escape characters), jotka aiheuttavat tulostuksessa esimerkiksi rivinvaihdon tai kursorin siirron seuraavaan tabulointikohtaan. Tärkeimpiä erikoismerkkejä: \n rivinvaihto \t tabulaattori \ yksinkertainen lainausmerkki \" kaksinkertainen lainausmerkki \\ yksi kenoviiva T-106.1208 Ohjelmoinnin perusteet Y 23.2.2009 25 / 44

Tyhjien merkkien poisto syötteen alusta ja lopusta Usein halutaan poistaa käyttäjän syötteestä käyttäjän mahdollisesti vahingossa alkuun tai loppuun kirjoittamat ns. tyhjät merkit (välilyönnit, tabuloinnit, rivinvaihdot). Tämä on helppo tehdä metodin strip avulla: >>> syote = raw_input("anna tekstia.\n") Anna tekstia. kirjoitetaan jotain >>> print "*%s*" % (syote) * kirjoitetaan jotain * >>> muutettu_syote = syote.strip() >>> print "*%s*" % (muutettu_syote) *kirjoitetaan jotain* Jos tyhjät merkit halutaan poistaan vain merkkijonon alusta tai lopusta, voidaan käyttää metodeita lstrip tai rstrip. T-106.1208 Ohjelmoinnin perusteet Y 23.2.2009 27 / 44

Merkkijonon jakaminen Monesti on tarve jakaa merkkijono osiin jonkun merkin (esimerkiksi välilyönnin kohdata). Esimerkki: halutaan erottaa samalla rivillä annettu etunimi ja sukunimi tai sana ja sen käännös toiselle kielelle toisistaan. Merkkijono voidaan jakaa metodilla split. Se palauttaa listan, joka sisältää jaetun merkkijonon eri osat. Oletusarvoisesti split-metodi jakaa merkkijonon välilyönnin kohdalta, mutta metodille voidaan antaa parametrina joku muu merkki, jonka kohdasta jako tehdään. Jaossa käytetty merkki ei tule mukaan mihinkään osaan. T-106.1208 Ohjelmoinnin perusteet Y 23.2.2009 29 / 44

Merkkijonon jakaminen, esimerkkejä >>> teksti = "Pitempi teksti, joka sisaltaa monta eri sanaa." >>> osat = teksti.split() >>> print osat [ Pitempi, teksti,, joka, sisaltaa, monta, eri, sanaa. ] >>> sanarivi = "kirja=book" >>> kaannokset = sanarivi.split("=") >>> print kaannokset [ kirja, book ] T-106.1208 Ohjelmoinnin perusteet Y 23.2.2009 31 / 44

Merkkijonojen vertailu Merkkijonojen sisältöjä voi verrata toisiinsa vertailuoperaattoreilla ==,!=, <=, >=, < ja >. Kun katsotaan, onko toinen merkkijono suurempi kuin toinen, verrataan merkkejä keskenään merkkijonojen alusta lähtien. Järjestyksen määrää kirjainten arvo käytetyssä merkkikoodausjärjestelmässä mitä lukuarvoa kukin kirjain vastaa. Käytännössä koodit noudattavat muuten aakkosjärjestystä, mutta isot kirjaimet ovat ennen pieniä ja skandinaaviset aakkoset eivät ole keskenään oikeassa järjestyksessä. T-106.1208 Ohjelmoinnin perusteet Y 23.2.2009 33 / 44

Esimerkkejä merkkijonojen vertailuista >>> nimi1 = "matti" >>> nimi2 = "teppo" >>> nimi1 == nimi2 False >>> >>> nimi1 < nimi2 True >>> >>> nimi3 = "Teppo" >>> nimi2 == nimi3 False >>> >>> nimi3 < nimi2 True T-106.1208 Ohjelmoinnin perusteet Y 23.2.2009 35 / 44

Esimerkkejä merkkijonojen vertailuista, jatkoa >>> nimi1 = "matti" >>> nimi4 = "matilda" >>> nimi1 < nimi4 False T-106.1208 Ohjelmoinnin perusteet Y 23.2.2009 37 / 44

Esimerkki: lämpötilamuunnos Seuraava esimerkkiohjelma muuttaa käyttäjän antamia lämpötiloja fahrenheit-asteista celsius-asteiksi tai päinvastoin käyttäjän valinnan mukaan. Merkkijonojen vertailulla selvitetään, kumpaan suuntaan käyttäjä haluaa tehdä muunnoksen ja sen mukaan kutsutaan oikeaa funktiota. Lisäksi vertailun avulla selvitetään, haluaako käyttäjä tehdä uuden muunnoksen. Käyttäjän syötteet muutetaan kokonaan isoiksi tai pieniksi kirjaimiksi, jotta niiden ero ei vaikuttaisi vertailun tulokseen. T-106.1208 Ohjelmoinnin perusteet Y 23.2.2009 38 / 44

Lämpötilamuunnos: koodi def muunna_celsiuksiksi(f_asteet): celsius_asteet = (F_asteet - 32) * 5.0 / 9.0 return celsius_asteet def muunna_fahrenheiteiksi(c_asteet): fahrenheit_asteet = 9.0/5.0 * C_asteet + 32 return fahrenheit_asteet T-106.1208 Ohjelmoinnin perusteet Y 23.2.2009 40 / 44

Lämpötilamuunnos: koodi jatkuu def main(): jatko = "kylla" while jatko!= "ei": rivi = raw_input("anna lampotilan yksikko (C/F): ") yksikko = rivi.upper() if yksikko == "C": rivi = raw_input("lampotila celsius-asteina: ") asteet = float(rivi) fahrenheit = muunna_fahrenheiteiksi(asteet) print asteet, "C on", fahrenheit, "F." elif yksikko == "F": rivi = raw_input("lampotila fahrenheiteina: ") asteet = float(rivi) celsius = muunna_celsiuksiksi(asteet) print asteet, "F on", celsius, "C." T-106.1208 Ohjelmoinnin perusteet Y 23.2.2009 42 / 44

Lämpötilamuunnos: koodi jatkuu main() else: print "Virheellinen yksikko, oikea on C tai F" rivi = raw_input("haluatko jatkaa (kylla/ei)? ") jatko = rivi.lower() T-106.1208 Ohjelmoinnin perusteet Y 23.2.2009 44 / 44