Wikikirjasto fiwikibooks https://fi.wikibooks.org/wiki/Wikikirjasto:Etusivu MediaWiki 1.39.0-wmf.23 first-letter Media Toiminnot Keskustelu Käyttäjä Keskustelu käyttäjästä Wikikirjasto Keskustelu Wikikirjastosta Tiedosto Keskustelu tiedostosta Järjestelmäviesti Keskustelu järjestelmäviestistä Malline Keskustelu mallineesta Ohje Keskustelu ohjeesta Luokka Keskustelu luokasta TimedText TimedText talk Moduuli Keskustelu moduulista Pienoisohjelma Keskustelu pienoisohjelmasta Pienoisohjelman määritys Keskustelu pienoisohjelman määrityksestä Python 3 0 12211 140292 140191 2022-08-16T18:42:47Z Hunsvotti 6338 +hkau wikitext text/x-wiki {{Edellinen-seuraava|Aiheesta muualla|Yleistä}} {{Haku kirjasta}} Python on monipuolinen tulkattava ohjelmointikieli, joka on alun perin kehitetty yhdistämään skriptikielten ja tavanomaisten ohjelmointikielten hyvät puolet. Pythonia pidetään helppona oppia sen yksinkertaisen syntaksin ja korkean tason tietorakenteiden takia. Monet suosittelevat sitä ensimmäiseksi ohjelmointikieleksi. Pythonia on usein verrattu sellaisiin kieliin kuin Perl, Java, Ruby, Tcl ja Scheme. Tämä kirja käsittelee Python-ohjelmointikielen versiota 3. Koska 3. versio ei ole täysin yhteensopiva 2. version kanssa on siitä oma kirjansa [[Python 2]]. ==Kirjoitussuunitelma== #Kopioidaan sisältö Python 2 -kirjasta päivittäen se Python 3 -muotoon sisällysluettelon mukaan edeten. #[https://en.wikibooks.org/wiki/Python_Programming Englanninkielisestä python kirjasta] voisi ottaa vinkkiä sisällön täydentämiseen. ==Sisällys== # Johdanto ## [[/Yleistä/]] ## [[/Syntaksi/]] ## [[/Operaattorit/]] ## [[/Ohjelman luonti/]] # Tietotyypit ja tietorakenteet ## [[/Luvut/]] ## [[/Merkkijonot/]] (string) ## [[/Lista/]] (list) ## [[/Monikko/]] (tuple) ## [[/Sanakirja/]] (dict) ## [[/Joukko/]] (set) # Ohjausrakenteet ## [[/if-lause/]] ## [[/while-silmukka/]] ## [[/for-silmukka/]] ## [[/Virheidenhallinta/]] # Muut kielen rakenteet ## [[/Funktio/]] ## [[/Moduuli/]] ## [[/Luokka/]] # Syöte ja tulostus ## [[/Tulostus standarditulostukseen/]] ## [[/Standardisyötteestä lukeminen/]] ## [[/Tiedosto/]] # Lisää funktioista ## [[/Sisäiset funktiot/]] ## [[/Korkeamman asteen funktiot/]] ## [[/Generaattorifunktiot/]] # Lisää luokista ## [[/Iteraattorit/]] ## [[/Operaattoreiden kuormittaminen/]] ## [[/Kontekstimanageri/]] # Graafinen käyttöliittymä ## [[/GUI/]] # Harjoitustehtäviä ## [[/Hello, world!/]] ## [[/Wikishakkisivu/]] # Lisätiedot ja lähteet ## [[/Aiheesta muualla/]] __NOTOC__ {{Python 3}} [[Luokka:Python 3|*]] [[en:Programming:Python]] 8am8fzjvpc7lga8nm9ex85yr3t4s31b Python 3/Yleistä 0 12214 140298 139753 2022-08-16T19:06:31Z Hunsvotti 6338 /* Interaktiivinen Python-tulkki */ wikitext text/x-wiki {{Edellinen-seuraava||Syntaksi}} '''Python''' on nimetty brittiläisen komediaryhmä Monty Pythonin tunnetun ''Monty Pythonin lentävä sirkus'' -tv-sarjan mukaan. == Kieli == Python tukee monenlaisia ohjelmointiparadigmoja eli lähestymistapoja ohjelmointiin; sitä voi käyttää mm. olio-suuntautuneena, proseduraalisena (tarkemmin sanottuna rakenteellisena) tai funktionaalisena ohjelmointikielenä. Python on dynaamisesti tyypittävä ohjelmointikieli, eli ohjelmoijan ei tarvitse erikseen määrittää muuttujille tyyppejä. C-ohjelmoija saattaa tehdä vakavia virheitä Python-ohjelmissa C-kääntäjän tiukan syntaksitarkistuksen puuttuessa, jos hän käyttää naiivia ohjelmointityyliä eikä tarkista muuttujien tyyppiä ja sisältöä ennen niiden käyttöä. == Toteutukset == Python-kielestä on tehty useita toteutuksia. Tunnetuimmat ovat C-ohjelmointikielellä tehty alkuperäinen (kielen määrittelevä) toteutus, Java-ohjelmointikielellä tehty Jython ja .NET-alustalla toimiva IronPython. Python-tulkki ja -kirjastot on kehitetty [[w:Avoin lähdekoodi|avoimen lähdekoodin]] projektina ja niitä levitetään Pythonin oman lisenssin alaisena, joka on yhteensopiva myös GPL-lisenssin kanssa. Pythonin lisenssi sallii lisäksi kaikenlaisen kaupallisen käytön ja jopa kaupallisen uudelleenlevittämisen. Python-koodin tulkitseminen ja ajoa edeltävä optimointi saattavat joskus olla hitaita prosesseja, ja Pythonia ajetaankin useimmiten tavukoodina hieman Javan tapaan. Tämä vie ohjelman suorituksesta pois kaikista hitaimman vaiheen, tulkkaamisen tavukoodiksi. Tulkkaamattoman Python-skriptin ajaminen saattaa olla moninkertaisesti tavallisen C-kielisen ohjelman ajamista hitaampaa. Python eroaa useimmista muista ohjelmointikielistä erittäin dynaamisen sidonnan vuoksi. Pythonin ympärille rakentuneen ohjelmointikulttuurin mukaan useat ongelmat ratkaistaan kaksi kertaa. Ensin rakennetaan ongelmaan Python-kielinen toteutus. Jos toteutuksesta tulee suosittu, laajaltikäytetty tai muutoin lisää suorituskykyä tarvitseva, niin modulista rakennetaan myös C-kielinen, nopeampi ja vähemmän muistia kuluttava versio. Pythonin selkeä ilmiasu ja erittäin dynaaminen nimien sidonta ovat johtaneet siihen, että yleensä samaan tarkoitukseen ei näe useita Python-kielisiä toteutuksia. == Skriptin rakenne ja suorittaminen == Python-koodi kirjoitetaan tiedostoihin, joissa on .py-pääte. Tiedostot ajetaan komennolla <syntaxhighlight lang="bash"> $ python3 tiedosto.py </syntaxhighlight> Jos tiedosto on tallennettu muussa kuin UTF-8-muodossa, pitää tiedoston alkuun kirjoittaa erityinen merkistökoodauksen kertova kommentti. <syntaxhighlight lang="Python"> # -*- coding: cp1252 -*- </syntaxhighlight> Python 3:ssa oletusmerkistökoodaus on UTF-8, joten tätä riviä ei tarvita, jos tiedosto on tallennettu UTF-8 muodossa. Jotta tiedoston voi suorittaa ilman suoraan ilman python3-tulkin kutsumista, voi tiedoston ensimmäiseksi riviksi kirjoittaa <syntaxhighlight lang="Python"> #!/usr/bin/env python3 </syntaxhighlight> Jos tiedostossa on molemmat, tulee merkistökoodauskommentti toiseksi riviksi. <syntaxhighlight lang="Python"> #!/usr/bin/env python3 # -*- coding: iso 8859-1 -*- </syntaxhighlight> Tiedostolle pitää myös antaa suoritusoikeudet. Linuxissa ja muissa vastaavissa: <syntaxhighlight lang="bash"> $ chmod u+x tiedosto.py </syntaxhighlight> Nyt tiedoston voi käynnistää suoraan <syntaxhighlight lang="bash"> $ ./tiedosto.py </syntaxhighlight> tai klikkaamalla tiedoston kuvaketta. ==Python/Hello, world!== ===Yleistä=== * Funktioiden nimet on tapana aloittaa pienellä kirjaimella. * Luokkien nimet on tapana aloittaa isolla kirjaimella. ===Ensimmäinen ohjelma=== * helppo tapa <syntaxhighlight lang="Python"> print ('Hello, world!') </syntaxhighlight> * funktio <syntaxhighlight lang="Python"> def helloWorld(string): print (string) helloWorld('Hello, world!') </syntaxhighlight> * luokka mukaan <syntaxhighlight lang="Python"> class HelloWorld: def __init__(self, string): self.string = string def printString(self): print (self.string) HelloWorld('Hello, world!').printString() </syntaxhighlight> Tiedostoon kannattaa myös lisätä seuraava koodi, jonka sisään tulee pääohjelma <syntaxhighlight lang="Python"> if __name__ == "__main__": print("Hello world!") </syntaxhighlight> Tässä testataan ensin suoritettiinko tiedosto pääohjelmana. Jos olemme pääohjelmassa suoritetaan if-lohkon komennot. Muuttuja <code>__name__</code> on sisäänrakennettu muuttuja, joka sisältää nykyisen moduulin eli tiedoston nimen. == Interaktiivinen Python-tulkki == Python-tulkin voi käynnistää käyttöjärjestelmän komentotolkista komennolla <syntaxhighlight lang="bash"> $ python3 </syntaxhighlight> tai, jos halutaan lukea tai suorittaa tiedosto ensin ja sen jälkeen jatkaa interaktiivisesti Python-tulkissa <syntaxhighlight lang="bash"> $ python3 -i tiedosto.py </syntaxhighlight> Interaktiiviseen tulkkiin voi kirjoittaa komentoja, ja tulkki toteuttaa ne suoraan. Komentotulkkiin kirjoitettu Python-koodi aloitetaan tässä oppaassa aina kolmella kulmasulkeella (>) tai kolmella pisteellä (.), jos monirivinen komento jatkuu. Tulkin vastaus tulee näiden jälkeen ilman etumerkkejä. <syntaxhighlight lang="Python"> >>> 3 + 1 4 >>> if 3 + 1 == 4: ... print("Hello world") ... Hello world! </syntaxhighlight> Edellisen lausekkeen tulos tallennetaan muuttuujaan _ (alaviiva), josta sitä voi käyttää uuden lausekkeen osana. <syntaxhighlight lang="Python"> >>> 3 + 1 4 >>> _ * 2 8 </syntaxhighlight> Perustulkin lisäksi on olemassa myös muita lisäominaisuuksia sisältäviä Python-tulkkeja kuten IPython ja selaimessa käytettävä Jupyter Notebook. ===Harjoitustehtäviä=== *[[Python 3/Hello, world!]] {{Python 3}} c08y5oieqtaibf0cemkbp238hnjxypr 140299 140298 2022-08-16T19:08:20Z Hunsvotti 6338 /* Interaktiivinen Python-tulkki */ wikitext text/x-wiki {{Edellinen-seuraava||Syntaksi}} '''Python''' on nimetty brittiläisen komediaryhmä Monty Pythonin tunnetun ''Monty Pythonin lentävä sirkus'' -tv-sarjan mukaan. == Kieli == Python tukee monenlaisia ohjelmointiparadigmoja eli lähestymistapoja ohjelmointiin; sitä voi käyttää mm. olio-suuntautuneena, proseduraalisena (tarkemmin sanottuna rakenteellisena) tai funktionaalisena ohjelmointikielenä. Python on dynaamisesti tyypittävä ohjelmointikieli, eli ohjelmoijan ei tarvitse erikseen määrittää muuttujille tyyppejä. C-ohjelmoija saattaa tehdä vakavia virheitä Python-ohjelmissa C-kääntäjän tiukan syntaksitarkistuksen puuttuessa, jos hän käyttää naiivia ohjelmointityyliä eikä tarkista muuttujien tyyppiä ja sisältöä ennen niiden käyttöä. == Toteutukset == Python-kielestä on tehty useita toteutuksia. Tunnetuimmat ovat C-ohjelmointikielellä tehty alkuperäinen (kielen määrittelevä) toteutus, Java-ohjelmointikielellä tehty Jython ja .NET-alustalla toimiva IronPython. Python-tulkki ja -kirjastot on kehitetty [[w:Avoin lähdekoodi|avoimen lähdekoodin]] projektina ja niitä levitetään Pythonin oman lisenssin alaisena, joka on yhteensopiva myös GPL-lisenssin kanssa. Pythonin lisenssi sallii lisäksi kaikenlaisen kaupallisen käytön ja jopa kaupallisen uudelleenlevittämisen. Python-koodin tulkitseminen ja ajoa edeltävä optimointi saattavat joskus olla hitaita prosesseja, ja Pythonia ajetaankin useimmiten tavukoodina hieman Javan tapaan. Tämä vie ohjelman suorituksesta pois kaikista hitaimman vaiheen, tulkkaamisen tavukoodiksi. Tulkkaamattoman Python-skriptin ajaminen saattaa olla moninkertaisesti tavallisen C-kielisen ohjelman ajamista hitaampaa. Python eroaa useimmista muista ohjelmointikielistä erittäin dynaamisen sidonnan vuoksi. Pythonin ympärille rakentuneen ohjelmointikulttuurin mukaan useat ongelmat ratkaistaan kaksi kertaa. Ensin rakennetaan ongelmaan Python-kielinen toteutus. Jos toteutuksesta tulee suosittu, laajaltikäytetty tai muutoin lisää suorituskykyä tarvitseva, niin modulista rakennetaan myös C-kielinen, nopeampi ja vähemmän muistia kuluttava versio. Pythonin selkeä ilmiasu ja erittäin dynaaminen nimien sidonta ovat johtaneet siihen, että yleensä samaan tarkoitukseen ei näe useita Python-kielisiä toteutuksia. == Skriptin rakenne ja suorittaminen == Python-koodi kirjoitetaan tiedostoihin, joissa on .py-pääte. Tiedostot ajetaan komennolla <syntaxhighlight lang="bash"> $ python3 tiedosto.py </syntaxhighlight> Jos tiedosto on tallennettu muussa kuin UTF-8-muodossa, pitää tiedoston alkuun kirjoittaa erityinen merkistökoodauksen kertova kommentti. <syntaxhighlight lang="Python"> # -*- coding: cp1252 -*- </syntaxhighlight> Python 3:ssa oletusmerkistökoodaus on UTF-8, joten tätä riviä ei tarvita, jos tiedosto on tallennettu UTF-8 muodossa. Jotta tiedoston voi suorittaa ilman suoraan ilman python3-tulkin kutsumista, voi tiedoston ensimmäiseksi riviksi kirjoittaa <syntaxhighlight lang="Python"> #!/usr/bin/env python3 </syntaxhighlight> Jos tiedostossa on molemmat, tulee merkistökoodauskommentti toiseksi riviksi. <syntaxhighlight lang="Python"> #!/usr/bin/env python3 # -*- coding: iso 8859-1 -*- </syntaxhighlight> Tiedostolle pitää myös antaa suoritusoikeudet. Linuxissa ja muissa vastaavissa: <syntaxhighlight lang="bash"> $ chmod u+x tiedosto.py </syntaxhighlight> Nyt tiedoston voi käynnistää suoraan <syntaxhighlight lang="bash"> $ ./tiedosto.py </syntaxhighlight> tai klikkaamalla tiedoston kuvaketta. ==Python/Hello, world!== ===Yleistä=== * Funktioiden nimet on tapana aloittaa pienellä kirjaimella. * Luokkien nimet on tapana aloittaa isolla kirjaimella. ===Ensimmäinen ohjelma=== * helppo tapa <syntaxhighlight lang="Python"> print ('Hello, world!') </syntaxhighlight> * funktio <syntaxhighlight lang="Python"> def helloWorld(string): print (string) helloWorld('Hello, world!') </syntaxhighlight> * luokka mukaan <syntaxhighlight lang="Python"> class HelloWorld: def __init__(self, string): self.string = string def printString(self): print (self.string) HelloWorld('Hello, world!').printString() </syntaxhighlight> Tiedostoon kannattaa myös lisätä seuraava koodi, jonka sisään tulee pääohjelma <syntaxhighlight lang="Python"> if __name__ == "__main__": print("Hello world!") </syntaxhighlight> Tässä testataan ensin suoritettiinko tiedosto pääohjelmana. Jos olemme pääohjelmassa suoritetaan if-lohkon komennot. Muuttuja <code>__name__</code> on sisäänrakennettu muuttuja, joka sisältää nykyisen moduulin eli tiedoston nimen. == Interaktiivinen Python-tulkki == Python-tulkin voi käynnistää käyttöjärjestelmän komentotolkista komennolla <syntaxhighlight lang="bash"> $ python3 </syntaxhighlight> tai, jos halutaan lukea tai suorittaa tiedosto ensin ja sen jälkeen jatkaa interaktiivisesti Python-tulkissa <syntaxhighlight lang="bash"> $ python3 -i tiedosto.py </syntaxhighlight> Interaktiiviseen tulkkiin voi kirjoittaa komentoja, ja tulkki toteuttaa ne suoraan. Komentotulkkiin kirjoitettu Python-koodi aloitetaan tässä oppaassa aina kolmella kulmasulkeella (>) tai kolmella pisteellä (.), jos monirivinen komento jatkuu. Tulkin vastaus tulee näiden jälkeen ilman etumerkkejä. <syntaxhighlight lang="Python"> >>> 3 + 1 4 >>> if 3 + 1 == 4: ... print("Hello world") ... Hello world! </syntaxhighlight> Edellisen lausekkeen tulos tallennetaan muuttuujaan _ (alaviiva), josta sitä voi käyttää uuden lausekkeen osana. <syntaxhighlight lang="Python"> >>> 3 + 1 4 >>> _ * 2 8 </syntaxhighlight> Huomaa, että tämä on komentotulkin ominaisuus. Ajettavassa Python-ohjelmassa muuttuja _ ei ole käytössä. Perustulkin lisäksi on olemassa myös muita lisäominaisuuksia sisältäviä Python-tulkkeja kuten IPython ja selaimessa käytettävä Jupyter Notebook. ===Harjoitustehtäviä=== *[[Python 3/Hello, world!]] {{Python 3}} 3g12sr1klvdc3nrnkmrbbas3txufyxs 140300 140299 2022-08-16T19:10:50Z Hunsvotti 6338 /* Interaktiivinen Python-tulkki */ wikitext text/x-wiki {{Edellinen-seuraava||Syntaksi}} '''Python''' on nimetty brittiläisen komediaryhmä Monty Pythonin tunnetun ''Monty Pythonin lentävä sirkus'' -tv-sarjan mukaan. == Kieli == Python tukee monenlaisia ohjelmointiparadigmoja eli lähestymistapoja ohjelmointiin; sitä voi käyttää mm. olio-suuntautuneena, proseduraalisena (tarkemmin sanottuna rakenteellisena) tai funktionaalisena ohjelmointikielenä. Python on dynaamisesti tyypittävä ohjelmointikieli, eli ohjelmoijan ei tarvitse erikseen määrittää muuttujille tyyppejä. C-ohjelmoija saattaa tehdä vakavia virheitä Python-ohjelmissa C-kääntäjän tiukan syntaksitarkistuksen puuttuessa, jos hän käyttää naiivia ohjelmointityyliä eikä tarkista muuttujien tyyppiä ja sisältöä ennen niiden käyttöä. == Toteutukset == Python-kielestä on tehty useita toteutuksia. Tunnetuimmat ovat C-ohjelmointikielellä tehty alkuperäinen (kielen määrittelevä) toteutus, Java-ohjelmointikielellä tehty Jython ja .NET-alustalla toimiva IronPython. Python-tulkki ja -kirjastot on kehitetty [[w:Avoin lähdekoodi|avoimen lähdekoodin]] projektina ja niitä levitetään Pythonin oman lisenssin alaisena, joka on yhteensopiva myös GPL-lisenssin kanssa. Pythonin lisenssi sallii lisäksi kaikenlaisen kaupallisen käytön ja jopa kaupallisen uudelleenlevittämisen. Python-koodin tulkitseminen ja ajoa edeltävä optimointi saattavat joskus olla hitaita prosesseja, ja Pythonia ajetaankin useimmiten tavukoodina hieman Javan tapaan. Tämä vie ohjelman suorituksesta pois kaikista hitaimman vaiheen, tulkkaamisen tavukoodiksi. Tulkkaamattoman Python-skriptin ajaminen saattaa olla moninkertaisesti tavallisen C-kielisen ohjelman ajamista hitaampaa. Python eroaa useimmista muista ohjelmointikielistä erittäin dynaamisen sidonnan vuoksi. Pythonin ympärille rakentuneen ohjelmointikulttuurin mukaan useat ongelmat ratkaistaan kaksi kertaa. Ensin rakennetaan ongelmaan Python-kielinen toteutus. Jos toteutuksesta tulee suosittu, laajaltikäytetty tai muutoin lisää suorituskykyä tarvitseva, niin modulista rakennetaan myös C-kielinen, nopeampi ja vähemmän muistia kuluttava versio. Pythonin selkeä ilmiasu ja erittäin dynaaminen nimien sidonta ovat johtaneet siihen, että yleensä samaan tarkoitukseen ei näe useita Python-kielisiä toteutuksia. == Skriptin rakenne ja suorittaminen == Python-koodi kirjoitetaan tiedostoihin, joissa on .py-pääte. Tiedostot ajetaan komennolla <syntaxhighlight lang="bash"> $ python3 tiedosto.py </syntaxhighlight> Jos tiedosto on tallennettu muussa kuin UTF-8-muodossa, pitää tiedoston alkuun kirjoittaa erityinen merkistökoodauksen kertova kommentti. <syntaxhighlight lang="Python"> # -*- coding: cp1252 -*- </syntaxhighlight> Python 3:ssa oletusmerkistökoodaus on UTF-8, joten tätä riviä ei tarvita, jos tiedosto on tallennettu UTF-8 muodossa. Jotta tiedoston voi suorittaa ilman suoraan ilman python3-tulkin kutsumista, voi tiedoston ensimmäiseksi riviksi kirjoittaa <syntaxhighlight lang="Python"> #!/usr/bin/env python3 </syntaxhighlight> Jos tiedostossa on molemmat, tulee merkistökoodauskommentti toiseksi riviksi. <syntaxhighlight lang="Python"> #!/usr/bin/env python3 # -*- coding: iso 8859-1 -*- </syntaxhighlight> Tiedostolle pitää myös antaa suoritusoikeudet. Linuxissa ja muissa vastaavissa: <syntaxhighlight lang="bash"> $ chmod u+x tiedosto.py </syntaxhighlight> Nyt tiedoston voi käynnistää suoraan <syntaxhighlight lang="bash"> $ ./tiedosto.py </syntaxhighlight> tai klikkaamalla tiedoston kuvaketta. ==Python/Hello, world!== ===Yleistä=== * Funktioiden nimet on tapana aloittaa pienellä kirjaimella. * Luokkien nimet on tapana aloittaa isolla kirjaimella. ===Ensimmäinen ohjelma=== * helppo tapa <syntaxhighlight lang="Python"> print ('Hello, world!') </syntaxhighlight> * funktio <syntaxhighlight lang="Python"> def helloWorld(string): print (string) helloWorld('Hello, world!') </syntaxhighlight> * luokka mukaan <syntaxhighlight lang="Python"> class HelloWorld: def __init__(self, string): self.string = string def printString(self): print (self.string) HelloWorld('Hello, world!').printString() </syntaxhighlight> Tiedostoon kannattaa myös lisätä seuraava koodi, jonka sisään tulee pääohjelma <syntaxhighlight lang="Python"> if __name__ == "__main__": print("Hello world!") </syntaxhighlight> Tässä testataan ensin suoritettiinko tiedosto pääohjelmana. Jos olemme pääohjelmassa suoritetaan if-lohkon komennot. Muuttuja <code>__name__</code> on sisäänrakennettu muuttuja, joka sisältää nykyisen moduulin eli tiedoston nimen. == Interaktiivinen Python-tulkki == Python-tulkin voi käynnistää käyttöjärjestelmän komentotolkista komennolla <syntaxhighlight lang="bash"> $ python3 </syntaxhighlight> tai, jos halutaan lukea tai suorittaa tiedosto ensin ja sen jälkeen jatkaa interaktiivisesti Python-tulkissa <syntaxhighlight lang="bash"> $ python3 -i tiedosto.py </syntaxhighlight> Interaktiiviseen tulkkiin voi kirjoittaa komentoja, ja tulkki toteuttaa ne suoraan. Komentotulkkiin kirjoitettu Python-koodi aloitetaan tässä oppaassa aina kolmella kulmasulkeella (>) tai kolmella pisteellä (.), jos monirivinen komento jatkuu. Tulkin vastaus tulee näiden jälkeen ilman etumerkkejä. <syntaxhighlight lang="Python"> >>> 3 + 1 4 >>> if 3 + 1 == 4: ... print("Hello world") ... Hello world! </syntaxhighlight> Edellisen lausekkeen tuloksen saa käyttöön muuttujan _ (alaviiva) kautta. <syntaxhighlight lang="Python"> >>> 3 + 1 4 >>> _ * 2 8 </syntaxhighlight> Huomaa, että tämä on komentotulkin ominaisuus. Ajettavassa Python-ohjelmassa muuttuja _ ei ole käytössä. Perustulkin lisäksi on olemassa myös muita lisäominaisuuksia sisältäviä Python-tulkkeja kuten IPython ja selaimessa käytettävä Jupyter Notebook. ===Harjoitustehtäviä=== *[[Python 3/Hello, world!]] {{Python 3}} 2hetffcecp31qn9wvofkkgvmuhmgcj1 140301 140300 2022-08-16T19:12:20Z Hunsvotti 6338 /* Interaktiivinen Python-tulkki */ wikitext text/x-wiki {{Edellinen-seuraava||Syntaksi}} '''Python''' on nimetty brittiläisen komediaryhmä Monty Pythonin tunnetun ''Monty Pythonin lentävä sirkus'' -tv-sarjan mukaan. == Kieli == Python tukee monenlaisia ohjelmointiparadigmoja eli lähestymistapoja ohjelmointiin; sitä voi käyttää mm. olio-suuntautuneena, proseduraalisena (tarkemmin sanottuna rakenteellisena) tai funktionaalisena ohjelmointikielenä. Python on dynaamisesti tyypittävä ohjelmointikieli, eli ohjelmoijan ei tarvitse erikseen määrittää muuttujille tyyppejä. C-ohjelmoija saattaa tehdä vakavia virheitä Python-ohjelmissa C-kääntäjän tiukan syntaksitarkistuksen puuttuessa, jos hän käyttää naiivia ohjelmointityyliä eikä tarkista muuttujien tyyppiä ja sisältöä ennen niiden käyttöä. == Toteutukset == Python-kielestä on tehty useita toteutuksia. Tunnetuimmat ovat C-ohjelmointikielellä tehty alkuperäinen (kielen määrittelevä) toteutus, Java-ohjelmointikielellä tehty Jython ja .NET-alustalla toimiva IronPython. Python-tulkki ja -kirjastot on kehitetty [[w:Avoin lähdekoodi|avoimen lähdekoodin]] projektina ja niitä levitetään Pythonin oman lisenssin alaisena, joka on yhteensopiva myös GPL-lisenssin kanssa. Pythonin lisenssi sallii lisäksi kaikenlaisen kaupallisen käytön ja jopa kaupallisen uudelleenlevittämisen. Python-koodin tulkitseminen ja ajoa edeltävä optimointi saattavat joskus olla hitaita prosesseja, ja Pythonia ajetaankin useimmiten tavukoodina hieman Javan tapaan. Tämä vie ohjelman suorituksesta pois kaikista hitaimman vaiheen, tulkkaamisen tavukoodiksi. Tulkkaamattoman Python-skriptin ajaminen saattaa olla moninkertaisesti tavallisen C-kielisen ohjelman ajamista hitaampaa. Python eroaa useimmista muista ohjelmointikielistä erittäin dynaamisen sidonnan vuoksi. Pythonin ympärille rakentuneen ohjelmointikulttuurin mukaan useat ongelmat ratkaistaan kaksi kertaa. Ensin rakennetaan ongelmaan Python-kielinen toteutus. Jos toteutuksesta tulee suosittu, laajaltikäytetty tai muutoin lisää suorituskykyä tarvitseva, niin modulista rakennetaan myös C-kielinen, nopeampi ja vähemmän muistia kuluttava versio. Pythonin selkeä ilmiasu ja erittäin dynaaminen nimien sidonta ovat johtaneet siihen, että yleensä samaan tarkoitukseen ei näe useita Python-kielisiä toteutuksia. == Skriptin rakenne ja suorittaminen == Python-koodi kirjoitetaan tiedostoihin, joissa on .py-pääte. Tiedostot ajetaan komennolla <syntaxhighlight lang="bash"> $ python3 tiedosto.py </syntaxhighlight> Jos tiedosto on tallennettu muussa kuin UTF-8-muodossa, pitää tiedoston alkuun kirjoittaa erityinen merkistökoodauksen kertova kommentti. <syntaxhighlight lang="Python"> # -*- coding: cp1252 -*- </syntaxhighlight> Python 3:ssa oletusmerkistökoodaus on UTF-8, joten tätä riviä ei tarvita, jos tiedosto on tallennettu UTF-8 muodossa. Jotta tiedoston voi suorittaa ilman suoraan ilman python3-tulkin kutsumista, voi tiedoston ensimmäiseksi riviksi kirjoittaa <syntaxhighlight lang="Python"> #!/usr/bin/env python3 </syntaxhighlight> Jos tiedostossa on molemmat, tulee merkistökoodauskommentti toiseksi riviksi. <syntaxhighlight lang="Python"> #!/usr/bin/env python3 # -*- coding: iso 8859-1 -*- </syntaxhighlight> Tiedostolle pitää myös antaa suoritusoikeudet. Linuxissa ja muissa vastaavissa: <syntaxhighlight lang="bash"> $ chmod u+x tiedosto.py </syntaxhighlight> Nyt tiedoston voi käynnistää suoraan <syntaxhighlight lang="bash"> $ ./tiedosto.py </syntaxhighlight> tai klikkaamalla tiedoston kuvaketta. ==Python/Hello, world!== ===Yleistä=== * Funktioiden nimet on tapana aloittaa pienellä kirjaimella. * Luokkien nimet on tapana aloittaa isolla kirjaimella. ===Ensimmäinen ohjelma=== * helppo tapa <syntaxhighlight lang="Python"> print ('Hello, world!') </syntaxhighlight> * funktio <syntaxhighlight lang="Python"> def helloWorld(string): print (string) helloWorld('Hello, world!') </syntaxhighlight> * luokka mukaan <syntaxhighlight lang="Python"> class HelloWorld: def __init__(self, string): self.string = string def printString(self): print (self.string) HelloWorld('Hello, world!').printString() </syntaxhighlight> Tiedostoon kannattaa myös lisätä seuraava koodi, jonka sisään tulee pääohjelma <syntaxhighlight lang="Python"> if __name__ == "__main__": print("Hello world!") </syntaxhighlight> Tässä testataan ensin suoritettiinko tiedosto pääohjelmana. Jos olemme pääohjelmassa suoritetaan if-lohkon komennot. Muuttuja <code>__name__</code> on sisäänrakennettu muuttuja, joka sisältää nykyisen moduulin eli tiedoston nimen. == Interaktiivinen Python-tulkki == Python-tulkin voi käynnistää käyttöjärjestelmän komentotolkista komennolla <syntaxhighlight lang="bash"> $ python3 </syntaxhighlight> tai, jos halutaan lukea tai suorittaa tiedosto ensin ja sen jälkeen jatkaa interaktiivisesti Python-tulkissa <syntaxhighlight lang="bash"> $ python3 -i tiedosto.py </syntaxhighlight> Interaktiiviseen tulkkiin voi kirjoittaa komentoja, jotka tulkki toteuttaa saman tien ja tulostaa tuloksen. Komentotulkkiin kirjoitettu Python-koodi aloitetaan tässä oppaassa aina kolmella kulmasulkeella (>) tai kolmella pisteellä (.), jos monirivinen komento jatkuu. Tulkin vastaus tulee näiden jälkeen ilman etumerkkejä. <syntaxhighlight lang="Python"> >>> 3 + 1 4 >>> if 3 + 1 == 4: ... print("Hello world") ... Hello world! </syntaxhighlight> Edellisen lausekkeen tuloksen saa käyttöön muuttujan _ (alaviiva) kautta. <syntaxhighlight lang="Python"> >>> 3 + 1 4 >>> _ * 2 8 </syntaxhighlight> Huomaa, että tämä on komentotulkin ominaisuus. Ajettavassa Python-ohjelmassa muuttuja _ ei ole käytössä. Perustulkin lisäksi on olemassa myös muita lisäominaisuuksia sisältäviä Python-tulkkeja kuten IPython ja selaimessa käytettävä Jupyter Notebook. ===Harjoitustehtäviä=== *[[Python 3/Hello, world!]] {{Python 3}} 9lcbxbbmssr01iyj8yumdvplbijjl5f 140302 140301 2022-08-16T19:13:23Z Hunsvotti 6338 /* Interaktiivinen Python-tulkki */ wikitext text/x-wiki {{Edellinen-seuraava||Syntaksi}} '''Python''' on nimetty brittiläisen komediaryhmä Monty Pythonin tunnetun ''Monty Pythonin lentävä sirkus'' -tv-sarjan mukaan. == Kieli == Python tukee monenlaisia ohjelmointiparadigmoja eli lähestymistapoja ohjelmointiin; sitä voi käyttää mm. olio-suuntautuneena, proseduraalisena (tarkemmin sanottuna rakenteellisena) tai funktionaalisena ohjelmointikielenä. Python on dynaamisesti tyypittävä ohjelmointikieli, eli ohjelmoijan ei tarvitse erikseen määrittää muuttujille tyyppejä. C-ohjelmoija saattaa tehdä vakavia virheitä Python-ohjelmissa C-kääntäjän tiukan syntaksitarkistuksen puuttuessa, jos hän käyttää naiivia ohjelmointityyliä eikä tarkista muuttujien tyyppiä ja sisältöä ennen niiden käyttöä. == Toteutukset == Python-kielestä on tehty useita toteutuksia. Tunnetuimmat ovat C-ohjelmointikielellä tehty alkuperäinen (kielen määrittelevä) toteutus, Java-ohjelmointikielellä tehty Jython ja .NET-alustalla toimiva IronPython. Python-tulkki ja -kirjastot on kehitetty [[w:Avoin lähdekoodi|avoimen lähdekoodin]] projektina ja niitä levitetään Pythonin oman lisenssin alaisena, joka on yhteensopiva myös GPL-lisenssin kanssa. Pythonin lisenssi sallii lisäksi kaikenlaisen kaupallisen käytön ja jopa kaupallisen uudelleenlevittämisen. Python-koodin tulkitseminen ja ajoa edeltävä optimointi saattavat joskus olla hitaita prosesseja, ja Pythonia ajetaankin useimmiten tavukoodina hieman Javan tapaan. Tämä vie ohjelman suorituksesta pois kaikista hitaimman vaiheen, tulkkaamisen tavukoodiksi. Tulkkaamattoman Python-skriptin ajaminen saattaa olla moninkertaisesti tavallisen C-kielisen ohjelman ajamista hitaampaa. Python eroaa useimmista muista ohjelmointikielistä erittäin dynaamisen sidonnan vuoksi. Pythonin ympärille rakentuneen ohjelmointikulttuurin mukaan useat ongelmat ratkaistaan kaksi kertaa. Ensin rakennetaan ongelmaan Python-kielinen toteutus. Jos toteutuksesta tulee suosittu, laajaltikäytetty tai muutoin lisää suorituskykyä tarvitseva, niin modulista rakennetaan myös C-kielinen, nopeampi ja vähemmän muistia kuluttava versio. Pythonin selkeä ilmiasu ja erittäin dynaaminen nimien sidonta ovat johtaneet siihen, että yleensä samaan tarkoitukseen ei näe useita Python-kielisiä toteutuksia. == Skriptin rakenne ja suorittaminen == Python-koodi kirjoitetaan tiedostoihin, joissa on .py-pääte. Tiedostot ajetaan komennolla <syntaxhighlight lang="bash"> $ python3 tiedosto.py </syntaxhighlight> Jos tiedosto on tallennettu muussa kuin UTF-8-muodossa, pitää tiedoston alkuun kirjoittaa erityinen merkistökoodauksen kertova kommentti. <syntaxhighlight lang="Python"> # -*- coding: cp1252 -*- </syntaxhighlight> Python 3:ssa oletusmerkistökoodaus on UTF-8, joten tätä riviä ei tarvita, jos tiedosto on tallennettu UTF-8 muodossa. Jotta tiedoston voi suorittaa ilman suoraan ilman python3-tulkin kutsumista, voi tiedoston ensimmäiseksi riviksi kirjoittaa <syntaxhighlight lang="Python"> #!/usr/bin/env python3 </syntaxhighlight> Jos tiedostossa on molemmat, tulee merkistökoodauskommentti toiseksi riviksi. <syntaxhighlight lang="Python"> #!/usr/bin/env python3 # -*- coding: iso 8859-1 -*- </syntaxhighlight> Tiedostolle pitää myös antaa suoritusoikeudet. Linuxissa ja muissa vastaavissa: <syntaxhighlight lang="bash"> $ chmod u+x tiedosto.py </syntaxhighlight> Nyt tiedoston voi käynnistää suoraan <syntaxhighlight lang="bash"> $ ./tiedosto.py </syntaxhighlight> tai klikkaamalla tiedoston kuvaketta. ==Python/Hello, world!== ===Yleistä=== * Funktioiden nimet on tapana aloittaa pienellä kirjaimella. * Luokkien nimet on tapana aloittaa isolla kirjaimella. ===Ensimmäinen ohjelma=== * helppo tapa <syntaxhighlight lang="Python"> print ('Hello, world!') </syntaxhighlight> * funktio <syntaxhighlight lang="Python"> def helloWorld(string): print (string) helloWorld('Hello, world!') </syntaxhighlight> * luokka mukaan <syntaxhighlight lang="Python"> class HelloWorld: def __init__(self, string): self.string = string def printString(self): print (self.string) HelloWorld('Hello, world!').printString() </syntaxhighlight> Tiedostoon kannattaa myös lisätä seuraava koodi, jonka sisään tulee pääohjelma <syntaxhighlight lang="Python"> if __name__ == "__main__": print("Hello world!") </syntaxhighlight> Tässä testataan ensin suoritettiinko tiedosto pääohjelmana. Jos olemme pääohjelmassa suoritetaan if-lohkon komennot. Muuttuja <code>__name__</code> on sisäänrakennettu muuttuja, joka sisältää nykyisen moduulin eli tiedoston nimen. == Interaktiivinen Python-tulkki == Python-tulkin voi käynnistää käyttöjärjestelmän komentotolkista komennolla <syntaxhighlight lang="bash"> $ python3 </syntaxhighlight> tai, jos halutaan lukea tai suorittaa tiedosto ensin ja sen jälkeen jatkaa interaktiivisesti Python-tulkissa <syntaxhighlight lang="bash"> $ python3 -i tiedosto.py </syntaxhighlight> Interaktiiviseen tulkkiin voi kirjoittaa komentoja, jotka tulkki toteuttaa saman tien ja tulostaa tuloksen. Komentotulkkiin kirjoitettu Python-koodi aloitetaan tässä oppaassa aina kolmella kulmasulkeella (>) tai kolmella pisteellä (.), jos monirivinen komento jatkuu. Tulkin vastaus tulee näiden jälkeen ilman etumerkkejä. <syntaxhighlight lang="Python"> >>> 3 + 1 4 >>> if 3 + 1 == 4: ... print("Hello world") ... Hello world! </syntaxhighlight> Edellisen komennon tuloksen saa käyttöön muuttujan _ (alaviiva) kautta. <syntaxhighlight lang="Python"> >>> 3 + 1 4 >>> _ * 2 8 </syntaxhighlight> Huomaa, että tämä on komentotulkin ominaisuus. Ajettavassa Python-ohjelmassa muuttuja _ ei ole käytössä. Perustulkin lisäksi on olemassa myös muita lisäominaisuuksia sisältäviä Python-tulkkeja kuten IPython ja selaimessa käytettävä Jupyter Notebook. ===Harjoitustehtäviä=== *[[Python 3/Hello, world!]] {{Python 3}} 9vf9l0kxzh6jprjfm71agmk2r2zkc7l Python 3/Luvut 0 12947 140295 140282 2022-08-16T18:59:15Z Hunsvotti 6338 wikitext text/x-wiki {{Edellinen-seuraava|Ohjelman luonti|Merkkijonot}} ;Pythonissa on kolme lukutyyppiä: {| class="wikitable" |- | kokonaisluku || <tt>int</tt> || |- | liukuluku || <tt>float</tt> || |- | kompleksiluku || <tt>complex</tt> || kompleksiluvut esitetään muodossa z = x + yj, missä j on imaginääriyksikkö |} Luvun tyyppiä ei tarvitse määritellä, koska Python tekee sen automaattisesti. Kokonaisluvut ovat lukuja, joilla ei ole desimaaliosaa. Ne voivat olla positiivisia tai negatiivisia. Kokonaisluvut voivat olla miten suuria tahansa. <syntaxhighlight lang="Python"> x = 5 y = -23 z = 18768765456465897097890986957645337829025751100581775023 </syntaxhighlight> Liukuluvuilla on kokonaisosa ja desimaaliosa. Erottimena käytetään pistettä. <syntaxhighlight lang="Python"> x = 5.25 </syntaxhighlight> Liukuluvut voi antaa myös tieteellisessä muodossa eli eksponenttimuodossa. Esim. -1.0e-03 = -1,0 &middot; 10<sup>3</sup> = 0,001. Liukuluvun voi pyöristää sisäänrakennetulla <code>round</code>-funktiolla. Funktiolle annetaan luku ja haluttu desimaalien määrä. <syntaxhighlight lang="Python"> >>> x = 3.141592653589793 >>> round(x, 3) 3.142 </syntaxhighlight> Kokonaislukujen kerrannaisiin voi pyöristää antamalla negatiivisen luvun toiseksi parametriksi. Luku (sen itseisarvo) tarkoittaa silloin nollien määrää. <syntaxhighlight lang="Python"> >>> round(182_889_477, -3) 182889000 </syntaxhighlight> Huomaa, että pyöristys ei aina vastaa täysin koulussa opetettua pyöristystapaa siitä johtuen että liukulukuja ei voi täysin tarkasti tietokoneilla tallentaa. <syntaxhighlight lang="Python"> x = -1e-06 y = -1.0e-03 </syntaxhighlight> Kompleksiluvuissa käytetään i:n sijasta j:tä. <syntaxhighlight lang="Python"> x = -1.0+2.5j </syntaxhighlight> Luvut voi kirjoittaa desimaali-, binaari-, oktaali- tai heksadesimaalimuodossa. Luvun eteen kirjoitetaan tällöin lukujärjestelmän osoittava etuliite. {| class="wikitable" |- ! lukujärjestelmä !! etuliite |- | desimaali || (ei mitään) |- | binaari || 0b |- | oktaali || 0o |- | heksadesimaali || 0x |- |} Luvuissa voi lisäksi käyttää alaviivaa (_) ryhmittelymerkkinä tekemään luvusta helppolukuisemman. <syntaxhighlight lang="Python"> 39_000_000 0b1100_0101 0xff_01_ab_2b </syntaxhighlight> == Muuttaminen tyyppien välillä == Luvun tyyppi muuttuu määräytyy automaattisesti sen mukaan mitä operaatio palauttaa. <syntaxhighlight lang="Python"> >>> x = 5 >>> type(x) <class 'int'> >>> y = x / 4 >>> y 1.25 >>> type(y) <class 'float'> >>> z = y + 2j >>> z (1.25+2j) >>> type(z) <class 'complex'> </syntaxhighlight> Tyypin voi myös muuttaa erikseen ilmaistuna tyyppimuunnosfunktioilla <code>int(), float()</code> ja <code>complex()</code>. <syntaxhighlight lang="Python"> >>> x = 5 >>> float(x) 5.0 >>> y = x / 4 >>> complex(y) (1.25+0j) </syntaxhighlight> Liukuluku on myös mahdollista muuttaa kokonaisluvuksi. Koska kokokonaisluku ei sisällä desimaaliosaa, saattaa operaatiossa hävitä osa informaatiosta. <syntaxhighlight lang="Python"> >>> y = 1.25 >>> int(y) 1 </syntaxhighlight> Liukuluvun muuttamiseen kokonaisluvuksi on siksi yleensä parempi käyttää <code>round</code>-funktiota. <syntaxhighlight lang="Python"> >>> round(1.2) 1 >>> round(1.8) 2 >>> round(1.5) 2 </syntaxhighlight> Kun hyvin suuri kokonaisluku muutetaan liukuluvuksi, aiheutuu virhe <code>OverflowError</code>, sillä kokonaisluvut voivat olla rajattoman suuria, mutta liukuluvut eivät. <syntaxhighlight lang="Python"> >>> float(9*10**1000) Traceback (most recent call last): File "<stdin>", line 1, in <module> OverflowError: int too large to convert to float </syntaxhighlight> Kompleksilukua ei voi muuttaa liukuluvuksi eikä kokonaisluvuksi tyyppimuunnosfunktioilla. Kompleksiluvun reaaliosan saa sen <code>real</code>-jäsenestä ja imaginääriosan <code>imag</code>-jäsenestä. <syntaxhighlight lang="Python"> >>> z = 1.25+2j >>> z.real 1.25 >>> z.imag 2.0 </syntaxhighlight> == Merkkijonon muuttaminen luvuksi == Merkkijono muutetaan kokonaisluvuksi <code>int</code>-funktiolla. <syntaxhighlight lang="Python"> >>> int("333") 333 </syntaxhighlight> Jos syötettä ei voi tulkita kokonaisluvuksi aiheutuu virhe. <syntaxhighlight lang="Python"> >>> int("kolme") Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: invalid literal for int() with base 10: 'kolme' >>> int("3.3") Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: invalid literal for int() with base 10: '3.3' </syntaxhighlight> Funktiolle <code>int</code> voi lisäksi antaa toisena parametrina lukukannan (väliltä 2–36). <syntaxhighlight lang="Python"> >>> int("b8", 16) 184 >>> int("01011100", 2) 92 >>> int("17", 8) 15 >>> int('f08z', 36) 700163 </syntaxhighlight> Luku voi alkaa kannan etuliitteellä (0x, 0o tai 0b). <syntaxhighlight lang="Python"> >>> int("0xb8", 16) 184 >>> int("0b01011100", 2) 92 >>> int("0o17", 8) 15 </syntaxhighlight> Merkkijono muutetaan liukuluvuksi <code>float</code>-funktioilla. <syntaxhighlight lang="Python"> >>> float("3.3") 3.3 >>> float("3.3e-4") 0.00033 </syntaxhighlight> Jos merkkijonon arvo on liian suuri liukuluvuksi, tulee arvoksi <code>inf</code> <syntaxhighlight lang="Python"> >>> iso = "9" * 10000 >>> float(iso) inf </syntaxhighlight> == Luvun muuttaminen merkkijonoksi == Luvun voi muuttaa kymmenkantaiseksi merkkijonoksi <code>str</code>-funktiolla. <syntaxhighlight lang="Python"> >>> str(15) '15' >>> str(3.3) '3.3' >>> str(3.3e-4) '0.00033' </syntaxhighlight> Numeron voi muuttaa heksadesimaali-, oktaali- tai binaarimuotoon funktioilla <code>hex()</code>, <code>oct()</code> ja <code>bin()</code>. <syntaxhighlight lang="Python"> >>> hex(15) '0xf' >>> oct(15) '0o17' >>> bin(15) '0b1111' </syntaxhighlight> Tarkemmin luvun muuttamisen voi tehdä f-merkkijonoilla tai muotoiluoperaattorilla, joita käsitellään seuraavassa luvussa. ==Aiheesta muualla== *[http://fi.wikiversity.org/wiki/Python-kielisen_ohjelmoinnin_perusteet Python-kielisen_ohjelmoinnin_perusteet] (Wikiopiston opintopiirin opiskeluohjeita) __NOTOC__ {{Python 3}} [[Luokka:Python|{{SUBPAGENAME}}]] ilygqfzdqz7hfhcdnk84pdbym0waxh3 140296 140295 2022-08-16T18:59:54Z Hunsvotti 6338 wikitext text/x-wiki {{Edellinen-seuraava|Ohjelman luonti|Merkkijonot}} ;Pythonissa on kolme lukutyyppiä: {| class="wikitable" |- | kokonaisluku || <tt>int</tt> || |- | liukuluku || <tt>float</tt> || |- | kompleksiluku || <tt>complex</tt> || kompleksiluvut esitetään muodossa z = x + yj, missä j on imaginääriyksikkö |} Luvun tyyppiä ei tarvitse määritellä, koska Python tekee sen automaattisesti. Kokonaisluvut ovat lukuja, joilla ei ole desimaaliosaa. Ne voivat olla positiivisia tai negatiivisia. Kokonaisluvut voivat olla miten suuria tahansa. <syntaxhighlight lang="Python"> x = 5 y = -23 z = 18768765456465897097890986957645337829025751100581775023 </syntaxhighlight> Liukuluvuilla on kokonaisosa ja desimaaliosa. Erottimena käytetään pistettä. <syntaxhighlight lang="Python"> x = 5.25 </syntaxhighlight> Liukuluvut voi antaa myös tieteellisessä muodossa eli eksponenttimuodossa. Esim. -1.0e-03 = -1,0 &middot; 10<sup>3</sup> = 0,001. Liukuluvun voi pyöristää sisäänrakennetulla <code>round</code>-funktiolla. Funktiolle annetaan luku ja haluttu desimaalien määrä. <syntaxhighlight lang="Python"> >>> x = 3.141592653589793 >>> round(x, 3) 3.142 </syntaxhighlight> Kokonaislukujen kerrannaisiin voi pyöristää antamalla negatiivisen luvun toiseksi parametriksi. Luku (sen itseisarvo) tarkoittaa silloin nollien määrää. <syntaxhighlight lang="Python"> >>> round(182889477, -3) 182889000 </syntaxhighlight> Huomaa, että pyöristys ei aina vastaa täysin koulussa opetettua pyöristystapaa siitä johtuen että liukulukuja ei voi täysin tarkasti tietokoneilla tallentaa. <syntaxhighlight lang="Python"> x = -1e-06 y = -1.0e-03 </syntaxhighlight> Kompleksiluvuissa käytetään i:n sijasta j:tä. <syntaxhighlight lang="Python"> x = -1.0+2.5j </syntaxhighlight> Luvut voi kirjoittaa desimaali-, binaari-, oktaali- tai heksadesimaalimuodossa. Luvun eteen kirjoitetaan tällöin lukujärjestelmän osoittava etuliite. {| class="wikitable" |- ! lukujärjestelmä !! etuliite |- | desimaali || (ei mitään) |- | binaari || 0b |- | oktaali || 0o |- | heksadesimaali || 0x |- |} Luvuissa voi lisäksi käyttää alaviivaa (_) ryhmittelymerkkinä tekemään luvusta helppolukuisemman. <syntaxhighlight lang="Python"> 39_000_000 0b1100_0101 0xff_01_ab_2b </syntaxhighlight> == Muuttaminen tyyppien välillä == Luvun tyyppi muuttuu määräytyy automaattisesti sen mukaan mitä operaatio palauttaa. <syntaxhighlight lang="Python"> >>> x = 5 >>> type(x) <class 'int'> >>> y = x / 4 >>> y 1.25 >>> type(y) <class 'float'> >>> z = y + 2j >>> z (1.25+2j) >>> type(z) <class 'complex'> </syntaxhighlight> Tyypin voi myös muuttaa erikseen ilmaistuna tyyppimuunnosfunktioilla <code>int(), float()</code> ja <code>complex()</code>. <syntaxhighlight lang="Python"> >>> x = 5 >>> float(x) 5.0 >>> y = x / 4 >>> complex(y) (1.25+0j) </syntaxhighlight> Liukuluku on myös mahdollista muuttaa kokonaisluvuksi. Koska kokokonaisluku ei sisällä desimaaliosaa, saattaa operaatiossa hävitä osa informaatiosta. <syntaxhighlight lang="Python"> >>> y = 1.25 >>> int(y) 1 </syntaxhighlight> Liukuluvun muuttamiseen kokonaisluvuksi on siksi yleensä parempi käyttää <code>round</code>-funktiota. <syntaxhighlight lang="Python"> >>> round(1.2) 1 >>> round(1.8) 2 >>> round(1.5) 2 </syntaxhighlight> Kun hyvin suuri kokonaisluku muutetaan liukuluvuksi, aiheutuu virhe <code>OverflowError</code>, sillä kokonaisluvut voivat olla rajattoman suuria, mutta liukuluvut eivät. <syntaxhighlight lang="Python"> >>> float(9*10**1000) Traceback (most recent call last): File "<stdin>", line 1, in <module> OverflowError: int too large to convert to float </syntaxhighlight> Kompleksilukua ei voi muuttaa liukuluvuksi eikä kokonaisluvuksi tyyppimuunnosfunktioilla. Kompleksiluvun reaaliosan saa sen <code>real</code>-jäsenestä ja imaginääriosan <code>imag</code>-jäsenestä. <syntaxhighlight lang="Python"> >>> z = 1.25+2j >>> z.real 1.25 >>> z.imag 2.0 </syntaxhighlight> == Merkkijonon muuttaminen luvuksi == Merkkijono muutetaan kokonaisluvuksi <code>int</code>-funktiolla. <syntaxhighlight lang="Python"> >>> int("333") 333 </syntaxhighlight> Jos syötettä ei voi tulkita kokonaisluvuksi aiheutuu virhe. <syntaxhighlight lang="Python"> >>> int("kolme") Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: invalid literal for int() with base 10: 'kolme' >>> int("3.3") Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: invalid literal for int() with base 10: '3.3' </syntaxhighlight> Funktiolle <code>int</code> voi lisäksi antaa toisena parametrina lukukannan (väliltä 2–36). <syntaxhighlight lang="Python"> >>> int("b8", 16) 184 >>> int("01011100", 2) 92 >>> int("17", 8) 15 >>> int('f08z', 36) 700163 </syntaxhighlight> Luku voi alkaa kannan etuliitteellä (0x, 0o tai 0b). <syntaxhighlight lang="Python"> >>> int("0xb8", 16) 184 >>> int("0b01011100", 2) 92 >>> int("0o17", 8) 15 </syntaxhighlight> Merkkijono muutetaan liukuluvuksi <code>float</code>-funktioilla. <syntaxhighlight lang="Python"> >>> float("3.3") 3.3 >>> float("3.3e-4") 0.00033 </syntaxhighlight> Jos merkkijonon arvo on liian suuri liukuluvuksi, tulee arvoksi <code>inf</code> <syntaxhighlight lang="Python"> >>> iso = "9" * 10000 >>> float(iso) inf </syntaxhighlight> == Luvun muuttaminen merkkijonoksi == Luvun voi muuttaa kymmenkantaiseksi merkkijonoksi <code>str</code>-funktiolla. <syntaxhighlight lang="Python"> >>> str(15) '15' >>> str(3.3) '3.3' >>> str(3.3e-4) '0.00033' </syntaxhighlight> Numeron voi muuttaa heksadesimaali-, oktaali- tai binaarimuotoon funktioilla <code>hex()</code>, <code>oct()</code> ja <code>bin()</code>. <syntaxhighlight lang="Python"> >>> hex(15) '0xf' >>> oct(15) '0o17' >>> bin(15) '0b1111' </syntaxhighlight> Tarkemmin luvun muuttamisen voi tehdä f-merkkijonoilla tai muotoiluoperaattorilla, joita käsitellään seuraavassa luvussa. ==Aiheesta muualla== *[http://fi.wikiversity.org/wiki/Python-kielisen_ohjelmoinnin_perusteet Python-kielisen_ohjelmoinnin_perusteet] (Wikiopiston opintopiirin opiskeluohjeita) __NOTOC__ {{Python 3}} [[Luokka:Python|{{SUBPAGENAME}}]] cnl8xgjeqan5amycjzmkwv2dte63jd4 140297 140296 2022-08-16T19:01:28Z Hunsvotti 6338 wikitext text/x-wiki {{Edellinen-seuraava|Ohjelman luonti|Merkkijonot}} ;Pythonissa on kolme lukutyyppiä: {| class="wikitable" |- | kokonaisluku || <tt>int</tt> || |- | liukuluku || <tt>float</tt> || |- | kompleksiluku || <tt>complex</tt> || kompleksiluvut esitetään muodossa z = x + yj, missä j on imaginääriyksikkö |} Luvun tyyppiä ei tarvitse määritellä, koska Python tekee sen automaattisesti. Kokonaisluvut ovat lukuja, joilla ei ole desimaaliosaa. Ne voivat olla positiivisia tai negatiivisia. Kokonaisluvut voivat olla miten suuria tahansa. <syntaxhighlight lang="Python"> x = 5 y = -23 z = 18768765456465897097890986957645337829025751100581775023 </syntaxhighlight> Liukuluvuilla on kokonaisosa ja desimaaliosa. Erottimena käytetään pistettä. <syntaxhighlight lang="Python"> x = 5.25 </syntaxhighlight> Liukuluvut voi antaa myös tieteellisessä muodossa eli eksponenttimuodossa. Esim. -1.0e-03 = -1,0 &middot; 10<sup>3</sup> = 0,001. Liukuluvun voi pyöristää sisäänrakennetulla <code>round</code>-funktiolla. Funktiolle annetaan luku ja haluttu desimaalien määrä. <syntaxhighlight lang="Python"> x = -1e-06 y = -1.0e-03 </syntaxhighlight> Kompleksiluvuissa käytetään i:n sijasta j:tä. <syntaxhighlight lang="Python"> x = -1.0+2.5j </syntaxhighlight> Luvut voi kirjoittaa desimaali-, binaari-, oktaali- tai heksadesimaalimuodossa. Luvun eteen kirjoitetaan tällöin lukujärjestelmän osoittava etuliite. {| class="wikitable" |- ! lukujärjestelmä !! etuliite |- | desimaali || (ei mitään) |- | binaari || 0b |- | oktaali || 0o |- | heksadesimaali || 0x |- |} Luvuissa voi lisäksi käyttää alaviivaa (_) ryhmittelymerkkinä tekemään luvusta helppolukuisemman. <syntaxhighlight lang="Python"> 39_000_000 0b1100_0101 0xff_01_ab_2b </syntaxhighlight> == Pyöristäminen == <syntaxhighlight lang="Python"> >>> π = 3.141592653589793 >>> round(π, 3) 3.142 </syntaxhighlight> Kokonaislukujen kerrannaisiin voi pyöristää antamalla negatiivisen luvun toiseksi parametriksi. Luku (sen itseisarvo) tarkoittaa silloin nollien määrää. <syntaxhighlight lang="Python"> >>> round(182889477, -3) 182889000 </syntaxhighlight> Huomaa, että pyöristys ei aina vastaa täysin koulussa opetettua pyöristystapaa siitä johtuen että liukulukuja ei voi täysin tarkasti tietokoneilla esittää. == Muuttaminen tyyppien välillä == Luvun tyyppi muuttuu määräytyy automaattisesti sen mukaan mitä operaatio palauttaa. <syntaxhighlight lang="Python"> >>> x = 5 >>> type(x) <class 'int'> >>> y = x / 4 >>> y 1.25 >>> type(y) <class 'float'> >>> z = y + 2j >>> z (1.25+2j) >>> type(z) <class 'complex'> </syntaxhighlight> Tyypin voi myös muuttaa erikseen ilmaistuna tyyppimuunnosfunktioilla <code>int(), float()</code> ja <code>complex()</code>. <syntaxhighlight lang="Python"> >>> x = 5 >>> float(x) 5.0 >>> y = x / 4 >>> complex(y) (1.25+0j) </syntaxhighlight> Liukuluku on myös mahdollista muuttaa kokonaisluvuksi. Koska kokokonaisluku ei sisällä desimaaliosaa, saattaa operaatiossa hävitä osa informaatiosta. <syntaxhighlight lang="Python"> >>> y = 1.25 >>> int(y) 1 </syntaxhighlight> Liukuluvun muuttamiseen kokonaisluvuksi on siksi yleensä parempi käyttää <code>round</code>-funktiota. <syntaxhighlight lang="Python"> >>> round(1.2) 1 >>> round(1.8) 2 >>> round(1.5) 2 </syntaxhighlight> Kun hyvin suuri kokonaisluku muutetaan liukuluvuksi, aiheutuu virhe <code>OverflowError</code>, sillä kokonaisluvut voivat olla rajattoman suuria, mutta liukuluvut eivät. <syntaxhighlight lang="Python"> >>> float(9*10**1000) Traceback (most recent call last): File "<stdin>", line 1, in <module> OverflowError: int too large to convert to float </syntaxhighlight> Kompleksilukua ei voi muuttaa liukuluvuksi eikä kokonaisluvuksi tyyppimuunnosfunktioilla. Kompleksiluvun reaaliosan saa sen <code>real</code>-jäsenestä ja imaginääriosan <code>imag</code>-jäsenestä. <syntaxhighlight lang="Python"> >>> z = 1.25+2j >>> z.real 1.25 >>> z.imag 2.0 </syntaxhighlight> == Merkkijonon muuttaminen luvuksi == Merkkijono muutetaan kokonaisluvuksi <code>int</code>-funktiolla. <syntaxhighlight lang="Python"> >>> int("333") 333 </syntaxhighlight> Jos syötettä ei voi tulkita kokonaisluvuksi aiheutuu virhe. <syntaxhighlight lang="Python"> >>> int("kolme") Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: invalid literal for int() with base 10: 'kolme' >>> int("3.3") Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: invalid literal for int() with base 10: '3.3' </syntaxhighlight> Funktiolle <code>int</code> voi lisäksi antaa toisena parametrina lukukannan (väliltä 2–36). <syntaxhighlight lang="Python"> >>> int("b8", 16) 184 >>> int("01011100", 2) 92 >>> int("17", 8) 15 >>> int('f08z', 36) 700163 </syntaxhighlight> Luku voi alkaa kannan etuliitteellä (0x, 0o tai 0b). <syntaxhighlight lang="Python"> >>> int("0xb8", 16) 184 >>> int("0b01011100", 2) 92 >>> int("0o17", 8) 15 </syntaxhighlight> Merkkijono muutetaan liukuluvuksi <code>float</code>-funktioilla. <syntaxhighlight lang="Python"> >>> float("3.3") 3.3 >>> float("3.3e-4") 0.00033 </syntaxhighlight> Jos merkkijonon arvo on liian suuri liukuluvuksi, tulee arvoksi <code>inf</code> <syntaxhighlight lang="Python"> >>> iso = "9" * 10000 >>> float(iso) inf </syntaxhighlight> == Luvun muuttaminen merkkijonoksi == Luvun voi muuttaa kymmenkantaiseksi merkkijonoksi <code>str</code>-funktiolla. <syntaxhighlight lang="Python"> >>> str(15) '15' >>> str(3.3) '3.3' >>> str(3.3e-4) '0.00033' </syntaxhighlight> Numeron voi muuttaa heksadesimaali-, oktaali- tai binaarimuotoon funktioilla <code>hex()</code>, <code>oct()</code> ja <code>bin()</code>. <syntaxhighlight lang="Python"> >>> hex(15) '0xf' >>> oct(15) '0o17' >>> bin(15) '0b1111' </syntaxhighlight> Tarkemmin luvun muuttamisen voi tehdä f-merkkijonoilla tai muotoiluoperaattorilla, joita käsitellään seuraavassa luvussa. ==Aiheesta muualla== *[http://fi.wikiversity.org/wiki/Python-kielisen_ohjelmoinnin_perusteet Python-kielisen_ohjelmoinnin_perusteet] (Wikiopiston opintopiirin opiskeluohjeita) __NOTOC__ {{Python 3}} [[Luokka:Python|{{SUBPAGENAME}}]] odzklancfunrcg7zx2p3vkvlbrf738r Wikikirjasto:GUS2Wiki 4 19077 140290 140274 2022-08-16T12:13:04Z Alexis Jazz 9837 Updating gadget usage statistics from [[Special:GadgetUsage]] ([[phab:T121049]]) wikitext text/x-wiki {{#ifexist:Project:GUS2Wiki/top|{{/top}}|This page provides a historical record of [[Special:GadgetUsage]] through its page history. To get the data in CSV format, see wikitext. To customize this message or add categories, create [[/top]].}} Nämä tiedot ovat välimuistista, ja ne on päivitetty viimeksi 2022-08-13T21:23:28Z. Välimuistissa on saatavilla enintään {{PLURAL:5000|yksi tulos|5000 tulosta}}. {| class="sortable wikitable" ! Pienoisohjelma !! data-sort-type="number" | Käyttäjien määrä !! data-sort-type="number" | Aktiiviset käyttäjät |- |HotCat || 9 || 1 |- |ProveIt || 7 || 1 |} * [[Toiminnot:GadgetUsage]] * [[m:Meta:GUS2Wiki/Script|GUS2Wiki]] <!-- data in CSV format: HotCat,9,1 ProveIt,7,1 --> 1cfksrrvnolm78ghk1tjpsvf5wlkma0 Malline:Haku kirjasta 10 19082 140291 2022-08-16T18:42:10Z Hunsvotti 6338 Ak: Uusi sivu: <inputbox> type=search prefix={{PAGENAME}}/ placeholder=Hae tästä kirjasta type=fulltext searchbuttonlabel=Hae </inputbox> wikitext text/x-wiki <inputbox> type=search prefix={{PAGENAME}}/ placeholder=Hae tästä kirjasta type=fulltext searchbuttonlabel=Hae </inputbox> rlt8qvchhcabzc7hnus9ujqls8rpkxs 140293 140291 2022-08-16T18:43:53Z Hunsvotti 6338 wikitext text/x-wiki <noinclude> {{mallineohje}} </noinclude> <inputbox> type=search prefix={{PAGENAME}}/ placeholder=Hae tästä kirjasta type=fulltext searchbuttonlabel=Hae </inputbox> 1ycbjqgtwt0jiwtgcbgl0r9rzlry92a 140294 140293 2022-08-16T18:46:14Z Hunsvotti 6338 wikitext text/x-wiki <noinclude> {{mallineohje|| Malline lisää hakulaatikon, jolla voi hakea kyseisestä kirjasta, kun se lisätään kirjan pääsivulle. <pre> {{Haku kirjasta}} </pre> |3=MallineenLuokka }} </noinclude> <inputbox> type=search prefix={{PAGENAME}}/ placeholder=Hae tästä kirjasta type=fulltext searchbuttonlabel=Hae </inputbox> 57q4c705slkxlcixe89krt0w4b1kig4